[iOS/SWIFT]SWIFT文法!-セット10:オプションバインド


皆さん、こんにちは~~今日は久しぶりにSweet文法を勉強しました前回学んだOptionalで深化した内容オフセットバインドは、オフセットの変数または定数を安全に展開する方法です.前回習った強制吹瓶(!)nil値を取得するときにエラーが発生するのは危険な方法ですが、外部バインドを解決する方法です.では、もっと詳しく知りましょう.

オプションのバインド


オフセットバインドは、オフセットを強制的に開く方法ではなく、オフセットを安全にチェックして展開する方法です.すなわちif文を用いて傍観者に割り当てられた値を一時変数または定数に割り当てる.
Force unwrapping : !強制抽出
Optional Binding:if let,guard let受信の抽出に使用
if letまたはifvarを使用して、傍観者の値が存在するかどうかを確認し、存在する場合は他の変数に値を代入します.傍観者に価値があればifゲートに入り、nilなら通過する方法です!このように確認して包装を開くと、強制的に包装を開くよりずっと安全になります.
ではグラウンドで簡単なコードを作って理解しましょう
let x : Int? = 10
let y : Int? = nil

if let xx = x {
    print("x = \(xx)")
}
else {
    print("x is Optional")
}

if let yy = y {
    print("y = \(yy)")
}
オフセット定数xおよびオフセット定数yでは、それぞれ10およびnilに初期化される.強制してUnlappingした後にx!y!コードで書けば、y!エラーが発生します.ただし、傍観者バインドを使用して上記のコードとともに使用すると、xの値を持つxがxxに代入され、if文が実行され、nilの値を持つyはyyに代入できずに直接通過する.
の結果もよかったですね!強制展開よりも外部バインドを使用することで、より安全に展開できます.

複数の傍観者をバインド


傍観者バインドを行う場合は、カンマで区切ることができる複数の変数または定数を同時に使用できます.
let name1 : String?
let name2 : String?

name1 = "Song"
name2 = "Kim"

if let nameFirst = name1,
   let nameSecond = name2 {
    print(nameFirst, nameSecond)
}
2つの文字列オフセット定数を宣言した後、オフセットバインドを使用して、次のようにパケットを解除します.この場合、(カンマ)を使用して2つの定数を一度にチェックできます.

guard let


守望パイオニアバインドを行う場合はifletだけでなくguard letもよく用いられる.二つの差は多くないが、少し違いがある.まずコードを書いてguard letを理解する
let x : Int? = 10
let y : Int? = nil

func opbinding() {
    
    guard let xx = x else {
        return print("x is Optional")
    }
    print(xx)

    guard let yy = y else {
        return print("y is Optional")
    }
    print(yy)
}

opbinding()
上記のようなコードを作成しました.見張りパイオニア定数xと見張りパイオニア定数yをそれぞれ10とnilに初期化し,今回はguard letを用いて見張りパイオニアを抽出する.if letは構文と似ていますが、guard letはelse部分しか作成できません.すなわち,nilの値で間接抽出ができない場合にのみ,いかなる行動をとることができる.nil値ではないことを確認してoutsialを抽出したらguard let文を通過します!ここで重要なのは、guard let文を通過すると、格納された定数がグローバル変数として使用できることです.使いやすい!
guard letのelse文では、常に文を返すか、投げ出す必要があります.ここでthrow文は例外処理文なので、後でよく勉強しましょう!上のコードはreturnを記述しています.関数にguard let文があるからです.
説明が少し長くなりましたさっそく運転を始めましょう
の結果から、x値はguard letでよく印刷され、y値はnilであるため、else文チェックで「y is optional」に戻ることができる.

if let vs guard let


*ゾーン変数、グローバル変数
この2つのフレーズはOptional Bindingの代表です.でも細かい違いがあるのでどんな違いなのか確認してみましょう
guard let yy = y else {
        return print("y is Optional")
    }
    print(yy)
guard letは,抽出に失敗してfalseとなる上記コードに示すelse問題のみを制御できる.定数に外部値を指定すると、guard letは上記のコードのグローバル変数として使用できます.すなわちguard letはドアの外でも分配定数を自由に使用できる.
if let xx = x {
        //xx는 여기서만 사용가능
    }
    else {
        print("x is Optional")
    }
    print(xx) //error!
if letの場合、falseに失敗したelse文と成功したelse文の外来抽出を制御できます.ただし、割当定数はif文でのみ使用できます.上記のコードのように実行すると、xxは領域変数であるため、エラーが発生します.

今日は外来バインドについて勉強しました強制抽出よりもずっと安全な方法なので、必ずこのように外来バインドで外来物を抽出しなければならない.では今日もお疲れ様でした~