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