nil 結合演算子 (a ?? b
) は、オプショナル a
が値を含んでいる場合はアンラップし、a
が nil
の場合にはデフォルト値 b
を返します。式 a
は常にオプショナル型です。式 b
の型は、a
内に保存される型と一致していなければなりません。
nil 結合演算子は、以下のコードの省略表現です。
a != nil ? a! : b
このコードは三項演算子を使用し、a
が nil
でない場合は a
内にラップされている値にアクセスするために強制アンラップし、そうでない場合は b
を返します。nil 結合演算子は、簡潔で読みやすい形式に条件チェックとアンラップを結合する洗練された方法です。
let defaultColorName = "red"
var userDefinedColorName: String? // デフォルト nil
var colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName は nil であり、デフォルトの "red" が colorNameToUse に設定される
userDefinedColorName
変数は、デフォルト値が nil
のオプショナル String
として定義されています。userDefinedColorName
はオプショナル型であるため、nil 結合演算子を使用することができます。上の例では、String
の colorNameToUse
変数の初期値を決めるために使用されています。userDefinedColorName
が nil
であるため、userDefinedColorName ?? defaultColorName
式は defaultColorName
の値、つまり "red"
を返します。
userDefinedColorName
に nil
でない値を代入し、nil 結合演算子チェックをあらためて実行した場合には、デフォルト値の代わりにuserDefinedColorName
内にラップされた値が使用されます。
userDefinedColorName = "green"
colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName は nil でないため、"green" が colorNameToUse に設定される
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.