SwiftUI | if let と guard let の意味と使い方

SwiftUI

SwiftUIの if let と guard let の意味と使い方を説明する。

結論

if letはオプショナルの変数がnilかどうかを普通に確認するだけ。

guard letはオプショナルの変数がnilかどうかを確認しnilの場合は強制returnする。

具体例

煮る煮ないどっちかを確認するという処理を例に説明する。

if let

  1. オプショナルの変数がnilではない場合アンラップしアンラップ後の変数に代入する。
  2. if節の中を実行する。nilではないので”煮ない”とprintする。
  3. オプショナルの変数がnilの場合、else節の中を実行する。nilなので”煮る”とprintする。
import SwiftUI

struct ContentView: View {
    var body: some View {
        Button("煮る?") {
            煮る煮ないどっち()
        }
        .buttonStyle(.borderedProminent)
    }
    
    func 煮る煮ないどっち() {
        let オプショナルの変数: String? = nil
        
        if let アンラップ後の変数 = オプショナルの変数 {       // 1
            // オプショナルの変数がnilではない場合こちらを実行  // 2
            print(アンラップ後の変数)
            print("煮ない")
        } else {                                         // 3
            // オプショナルの変数がnilの場合こちらを実行
            print("煮る")
        }
        // if節の外側ではアンラップ後の変数は使えない。
    }
}

guard let

  1. オプショナルの変数がnilではない場合アンラップしアンラップ後の変数に代入する。
  2. guard節の外側を実行する。nilではないので”煮ない”とprintする。
  3. オプショナルの変数がnilの場合、else節の中を実行する。nilではないので”煮ない”とprintする。else節の中では必ずreturnが必要。なのでこの場合はその後の処理を続けることはできない。
import SwiftUI

struct ContentView: View {
    var body: some View {
        Button("Tap") {
            煮る煮ないどっち()
        }
        .buttonStyle(.borderedProminent)
    }
    
    func 煮る煮ないどっち() {
        let オプショナルの変数: String? = nil

        guard
            let アンラップ後の変数 = オプショナルの変数          // 1
        else {
            // オプショナルの変数がnilの場合こちらを実行
            print("煮る")                                   // 3
            return
        }
        
        // オプショナルの変数がnilではない場合続きを実行           // 2
        // guard節の外側でもアンラップ後の変数を使える。
        print(アンラップ後の変数)
        print("煮ない")
    }
}

まとめ

nilを覚えるには魚を煮るのが良い。最近は魚のサブスクも増えている。Fishlle!(フィシュル)は未利用魚を使ったミールパックのサブスクということで、数々のメディアで取り上げられ、ここ最近ユーザー認知があがっている。

>> Fishlle!(フィシュル)のミールパックのサブスク申し込みはこちら

コメント

タイトルとURLをコピーしました