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()

「オプショナル値の後ろに?」 であって「?. 演算子ではない」、という解釈