複数のoptionalのバインディング
1つの条件で複数のoptionalをアンラップします。
「複数のoptionalのバインディング」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。
複数の値を一度にバインドする
カンマで区切ると、1つの if let で複数のオプショナルをアンラップできます。本文を実行するには、すべてが nil でない必要があります。
let a: Int? = 1
let b: Int? = 2
if let a, let b {
print(a + b)
}すべて成功するか、何も実行しないか
リスト内のオプショナルのいずれかが nil の場合、ブロック全体がスキップされます。すべて成功するか、何もアンラップされないかのどちらかです。
let first: String? = "Ada"
let last: String? = nil
if let first, let last {
print("\(first) \(last)")
} else {
print("Missing a name")
}完全な形式
完全な形式では、明示的な代入を使用します。if let a = optA, let b = optB のように書きます。省略形では、重複する名前を省けます。
let optX: Int? = 10
let optY: Int? = 20
if let x = optX, let y = optY {
print(x * y)
}バインディングと条件を組み合わせる
Boolean 条件とバインディングは交互に配置できます。後の条件では、先にアンラップした値を使用できます。
let age: Int? = 25
if let age, age >= 18 {
print("Adult: \(age)")
}依存するアンラップ
各値は左から右へアンラップされるため、後のバインディングは先のバインディングに依存できます。
let dict = ["key": "42"]
if let text = dict["key"], let number = Int(text) {
print(number + 8)
}順序が重要
バインディングは順番に評価され、短絡評価されます。最初のバインディングが失敗した場合、後続のバインディングはまったく評価されません。
func parse(_ s: String?) -> Int? {
print("parsing")
return s.flatMap { Int($0) }
}
let a: Int? = nil
if let a, let b = parse("5") {
print(a + b)
} else {
print("skipped")
}guard で複数の値を扱う
同じカンマ区切りの形式は guard let でも使え、続行する前に複数の値をアンラップできます。
func makeFullName(_ first: String?, _ last: String?) -> String {
guard let first, let last else { return "Unknown" }
return "\(first) \(last)"
}
print(makeFullName("Grace", "Hopper"))変換を組み合わせる
複数の文字列入力を一度に解析する場合、複数バインディングが役立ちます。
let wInput = "4"
let hInput = "5"
if let w = Int(wInput), let h = Int(hInput) {
print("Area: \(w * h)")
}ネストした if let を避ける
複数バインディングを使わない場合は、if let ブロックをネストしてピラミッド構造を作ることになります。カンマ形式なら、これを平坦化できます。
let p: Int? = 2
let q: Int? = 3
if let p {
if let q {
print(p + q)
}
}平坦化したバージョン
前のネストした例と同じロジックを、1つの複数バインディングで平坦に記述したものです。
let p: Int? = 2
let q: Int? = 3
if let p, let q {
print(p + q)
}末尾に条件を付ける
最後に Boolean チェックを追加して、組み合わせた結果を検証できます。
let xs = "3"
let ys = "9"
if let x = Int(xs), let y = Int(ys), x < y {
print("\(x) is less than \(y)")
}クイックチェック
複数のオプショナルバインディングをテストします。
まとめ: 複数のオプショナルをバインドする
カンマを使うと、1つの if let または guard let で複数のオプショナルをアンラップできます。すべて成功する必要があり、左から右へ評価され、依存するバインディングにも対応します。また、Boolean 条件も組み合わせられます。
let a: Int? = 1
let b: Int? = 2
if let a, let b { print(a + b) }よくある質問
「複数のoptionalのバインディング」レッスンは無料ですか?
はい。「複数のoptionalのバインディング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。
「複数のoptionalのバインディング」で何を学びますか?
1つの条件で複数のoptionalをアンラップします。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Swift Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「複数のoptionalのバインディング」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSwift Academyレッスンでコードを書いて実行できますか?
はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- if letと省略形のバインディング
- 早期終了のためのguard let
- 複数のoptionalのバインディング
- switchとforでのoptionalパターン