前の例では、オプショナルチェーンでオプショナル型のプロパティの値を取り出す方法を見ました。同様に、オプショナル型の値を返すメソッドを呼び出し、必要であればメソッドの戻り値をチェーンするために、オプショナルチェーンを利用することができます。

以下の例では、オプショナルチェーンで Address クラスの buildingIdentifier() メソッドを呼び出しています。このメソッドは String? 型の値を返します。上述したように、オプショナルチェーンの後、このメソッド呼び出しの最終的な戻り値の型もまた String? です。

if let buildingIdentifier = john.residence?.address?.buildingIdentifier() {
    print("John's building identifier is \(buildingIdentifier).")
}
// "John's building identifier is The Larches." と出力

このメソッドの戻り値にさらにオプショナルチェーンをつなぎたい場合、メソッドの丸括弧の後にクエスチョンマークを置きます。

if let beginsWithThe =
    john.residence?.address?.buildingIdentifier()?.hasPrefix("The") {
    if beginsWithThe {
        print("John's building identifier begins with \"The\".")
    } else {
        print("John's building identifier does not begin with \"The\".")
    }
}
// "John's building identifier begins with "The"." と出力
NOTE
この例では、チェーンするオプショナル値が buildingIdentifier() メソッド自体ではなく、buildingIdentifier() メソッドの戻り値であるため、丸括弧の後にオプショナルチェーンのクエスチョンマークを置いています。

Portions of this page are translations based on work created and shared by Apple and used according to terms described in the Creative Commons Attribution 4.0 International License.