Optional Chaining
昨日に引き続き https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html を読む。
- 強制アンラッピングの代替としてのオプショナル連鎖
- オプショナル値の後に
?
をつけて - オプショナル値が
nil
のとき、オプショナル連鎖は優雅に失敗する、 強制アンラッピングはランタイムエラー - プロパティ等の返り値が非オプショナルであっても、オプショナル連鎖の返り値はいつもオプショナル
- オプショナル連鎖経由で非オプショナルのプロパティを読み取り成功したことは オプショナル束縛で判る
if let x = o.property?.subProperty {
- オプショナル連鎖経由で
Void
のメソッドはVoid?
を返す- 呼んだかどうか検査するには
if o.property?.method() != nil
- プロパティ値設定も同じ
if (o.property?.subProperty = value) != nil
- 呼んだかどうか検査するには
- 添字形式は
a?[x]
table[i]?[j]
- オプショナル値を返すメソッドが混ざっても
if let x = o.p1?.p2?.m1()?.m2()
「オプショナル値の後ろに?
」 であって「?.
演算子ではない」、という解釈