Generic Operator

??(_:_:)

Performs a nil-coalescing operation, returning the wrapped value of an Optional instance or a default value. nil合体演算を実行します、ラップされた値のOptionalインスタンスまたは省略時の値を返します。

Declaration 宣言

func ?? <T>(optional: T?, defaultValue: @autoclosure () throws -> T) rethrows -> T

Parameters パラメータ

optional

An optional value. オプショナル値。

defaultValue

A value to use as a default. defaultValue is the same type as the Wrapped type of optional. 省略時のものとして使うための値。defaultValueは、optionalWrapped型と同じ型です。

Discussion 解説

A nil-coalescing operation unwraps the left-hand side if it has a value, or it returns the right-hand side as a default. The result of this operation will have the non-optional type of the left-hand side’s Wrapped type. nil合体演算は、左手側をそれが値を持つならばアンラップします、またはそれは右手側を省略時のものとして返します。この演算の結果は、左手側のもつWrapped型の非オプショナル型を持つことになります。

This operator uses short-circuit evaluation: optional is checked first, and defaultValue is evaluated only if optional is nil. For example: この演算子は、短絡評価を使います:optionalが最初に調べられます、そしてdefaultValueoptionalnilである場合にのみ評価されます。例えば:


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

In this example, goodNumber is assigned a value of 100 because Int("100") succeeded in returning a non-nil result. When notSoGoodNumber is initialized, Int("invalid-input") fails and returns nil, and so the getDefault() method is called to supply a default value. この例において、goodNumber100の値を割り当てられます、なぜならInt("100")が非nilの結果を返すことに成功したからです。notSoGoodNumberが初期化されるとき、Int("invalid-input")は失敗してnilを返します、そうするとgetDefault()メソッドが呼び出されて省略時の値を提供します。

See Also 参照

Coalescing Nil Values nil値の合体