構文の切り替え


  • 構文保証セキュリティ機能
  • で示す値は、
  • であってもよいし、なくてもよい.
    →変数/定数などに一定の値は保証できません.値はゼロの場合があります.
  • オプションは、非オプションの値とは全く異なるため、コンパイルエラー
  • を防止することができる.
    **外部変数/定数でない場合、nil値は指定できません.つまり、オープン(追加?)でなければなりませんが、nil値を指定できます.
  • C言語と異なり0はnullとは考えられない.零度有意値
  • nilは、オープンと宣言された場所でのみ
  • を使用できます.
    var myName : String? = "kevin"
    
    myName = nil
    
    print(myName) 
    //nil

  • 関数パラメータが非パラメータの場合は、「ああ、このパラメータには値は必要ない」とすぐに知る必要があります.

  • 傍観者は、値がある場合と値がない場合の2つのケースとして定義されます(enum)
    →nilの場合none case、値がある場合caseとなります.
    →傍観者に値がある場合、いくつかの関連する値Wrappedに値が割り当てられます
  • 抽出
    強制抽出:
  • 強制抽出
  • 最も危険だが最も簡単な方法(ランタイムエラーが発生する可能性がある)
  • ! 強制抽出後に値を返す→強制抽出時に値がない場合、ランタイムエラー
  • .
    var myName: String? = "kevin"
    
    //옵셔널이 아닌 변수에는 옵셔널 값이 들어갈 수 없음. 추출해서 할당해야 함
    var name: String = myName!
    
    myName = nil
    name = myName!
    //오류
    
    if myName!=nil{
    	print("name is \(myName!)")
    }else{
    	print("name == nil")
    }
    外部バインド:
  • Optional Binding
  • クライアントに値があるかどうかを確認するために使用
  • if、while文と組み合わせて
  • を使用
    var myName: String? = "yagom"
    
    // 옵셔널 바인딩을 통한 임시 상수 할당
    if let name = myName{
    	print("name is \(name)")
    }
    else{
    	print("nil")
    }
    //name is yagom
    
    // 옵셔널 바인딩을 통한 임시 변수 할당
    if var name = myName{
    	name = "kevin"
    	print("my name is \(name)")
    }
    else{
    	print("nil")
    }
    
    //my name is kevin 
    →nameは一時定数/変数です.コードブロック以外では使用できません
    複数の傍観者値を抽出する場合:
    var myName: String? = "yagom"
    var yourName: String? = nil
    
    if let name = myName, let friend = yourName{
    	print("\(name), \(friend)")
    }
    //friend 에 바인딩이 되지 않으므로 오류
    
    yourName = "eric"
    
    if let name = myName, let friend = yourName{
    	print("\(name), \(friend)")
    }
    //yagom eric
    暗黙抽出条件
  • Implicitly Unwrapped Optionals
  • オープンバインドは、抽出値が面倒でないかエラーが発生するたびに
  • を使用することを決定するために使用されます.
  • はもともとかっこいいですか?使いますが、ここで!
  • を使用
    var myName: String! = "yagom"
    print(myName)
    //yagom
    myName = nil
    
    if let name = myName{
    	print("\(name)")
    }else{
    	print("nil")
    }
    →おすすめの方法ではない