Swift 標準ライブラリ >     ??(_:_:)
汎用演算子
??(_:_:)
nil 合体操作を実行し、Optional インスタンスの密封された値またはデフォルト値を返します。
宣言
パラメータ
| optional | optional の値。 |
| defaultValue | デフォルトとして使用する値。defaultValue は、optional の Wrapped (密封された)型と同じ型です。 |
議論
nil 合体操作は、値がある場合は左側を開封し、デフォルトの場合は右側を返します。この操作の結果は、左辺の Wrapped (密封)された型の optional でない型を持ちます。
この演算子は短絡評価を使用します。optional は最初にチェックされ、defaultValue は optional が nil の場合にのみ評価されます。例えば:
func getDefault() -> Int {
print("Calculating default...")
return 42
}
let goodNumber = Int("100") ?? getDefault()
// goodNumber == 100
let notSoGoodNumber = Int("invalid-input") ?? getDefault()
// Prints "Calculating default..."
// notSoGoodNumber == 42
この例では、Int("100") が nil でない結果を返すのに成功したため、goodNumber は 100 の値を代入されます。notSoGoodNumber が初期化されると、Int("invalid-input") は失敗し、nil を返し、したがって、getDefault() メソッドが呼び出されてデフォルト値が提供されます。