白駿#1000:A+B


2つの整数AとBを入力し、A+Bを出力するプログラムを記述する問題
1️⃣
import Foundation

let line = readLine()!
let lineArr = line.split(separator: " ")

let a = Int(lineArr[0])!
let b = Int(lineArr[1])!

print(a + b)
2️⃣
import Foundation

let line = readLine()!
let lineArr = line.components(separatedBy: " ")

print(Int(lineArr[0])! + Int(lineArr[1])!)
関連構文
来訪者に!:外来強制抽出.答えコードでreadline()値がnilの場合、コードが爆発します.if letを使用してコードを安全に交換
  • サンプルコード
  • import Foundation
    
    var myName: String? = "sujilee" //myName은 옵셔널타입. "sujilee"로 초기화
    var yourName: String? = nil //yourName은 옵셔널타입. nil로 초기화
    
    if let name = myName, let friend = yourName {
        print("\(name) and \(friend)")
    } else {
        print("some nil is bothering you")
    }
    //OUTPUT : some nil is bothering you
    
    yourName = "sean" //nil이었던 yourName에 "sean" 값을 할당
    
    if let name = myName, let friend = yourName {
        print("now \(name) and \(friend)")
    }
    //OUTPUT : noew sujilee and sean
  • アプリケーションコード
  •  import Foundation
    
    var line  = readLine() //readLine()은 String? 을 반환한다.
    
    //lineArr에 대한 nil가드
    if let lineArr = line?.split(separator: " ") {
        //a와 b에 대한 nil가드
        if let a = Int(lineArr[0]), let b = Int(lineArr[1]) {
            print(a + b)
        } else {
            print("case 2 : a b both nil")
        }
    } else {
        print("case 1 : realine nil")
    }
    nilがrealineで入る場合が気になるので、プログラムを実行した後にプロンプトに何も入力せずにenterを検索しました.結果は面白かった

    まばたきはa,b.理由はIndex out range
    linearは空の文字列、[]ステータスです.
    しかし、インデックス0と1に近づこうとしたときにエラーが発生しました.linearrにnilが含まれると予想したのとは異なり、readline()を非グローバル強制抽出として指定する理由を理解しました.最初はreadlineにnilがいませんでした!