[swift]オフセット、オフセットバインド


Keyword

  • Optional
  • Optional Biniding
  • 購読をキャンセル
  • 明示的に無効
  • 強制解除
  • 非強制解除(フルバインド)
  • デフォルト解除
  • コンパイラによって
  • が自動的にアンインストールされます.
  • 暗示解除
  • "?"/"!"
  • 傍観者(オプション)

  • オプション
    値打ちがあるか、値打ちがないか.
  • 宣言の時、タイプの後ろ?(疑問符)貼り付けて使用できます.
  • // 옵셔널 : 선택적인
    // 값이 있을수도 없을 수도 있음.
    //
    var name: String?
    
    var optionalName: String? = "KSW"
    
    print(optionalName)
    
    // 에러 코드 (타입 에러)
    // 스위프트는 안정성을 위해 컴파일 에러를 낸다.
    // var name2: String = optionalName
  • の出力結果を見ると、Optionalという包装紙に包まれているのが見えます.
  • オプションに囲まれた値は、通常のタイプと結合も演算もできません.
  • このタスクを完了するには、オプションバインドが必要です.
    ->オプションの包装紙を剥離するプロセス.
  • 通関を取り消す


  • 傍観者バインド:オプション包装紙から値を抽出するプロセス

  • 通関の取り消し方法
    1.明示解除
  • 強制解除
  • 非強制解除(フルバインド)
  • 2.黙示的解除
  • コンパイラによって
  • が自動的にアンインストールされます.
  • 暗示解除
  • SWIFTコード

    // 명시적 해제
    // 강제 해제 (느낌표 붙이기. 위험함)
    var number: Int? = 3
    print(number)
    print(number!)
      
    // 비강제 해제 1 (if문 사용 옵셔널 바인딩)
    // **** 이 문법이 낯설다.
    if let result = number {
        print(result)
    } else{
        print("nil")
    }
    
    
    // 비강제 해제 2 (gaurd문 사용 옵셔널 바인딩)
    // guard 문을 사용해서도 옵셔널 바인딩을 할 수 있다.
    // guard 문에 대한 글 포스팅 예정.
    
    
    // 컴파일러에 의한 자동 해제
    // 옵셔널 값은 비교연산자를 이용해 다른 값과 비교하면,
    // 컴파일러가 자동적으로 옵셔널 값을 해제 시켜준다.
    let value: Int? = 6
    if value == 6 {
        print("value가 6입니다.")
    } else {
        print("value가 6이 아닙니다.")
    }
    
    
    // 묵시적 옵셔널 해제
    // 값을 사용할 때는 자동으로 옵셔널이 해제됨
    let str = "12"
    var strToInt: Int? = Int(str)
    // Int() 함수는 매개변수에 정수로 변환될 수 없는 값이 오면
    // nil을 반환하기 때문에 옵셔널 타입으로 선언해야 한다.
    print(strToInt)
    // 선언시에 ! 키워드를 사용하면 묵시적으로 옵셔널 해제를 해준다.
    var strToInt2: Int! = Int(str)
    print(strToInt2+1)