Nil Coalescing Operator

suggest change

You can use the nil coalescing operator to unwrap a value if it is non-nil, otherwise provide a different value:

func fallbackIfNil(str: String?) -> String {
    return str ?? "Fallback String"
}
print(fallbackIfNil("Hi")) // Prints "Hi"
print(fallbackIfNil(nil)) // Prints "Fallback String"

This operator is able to short-circuit, meaning that if the left operand is non-nil, the right operand will not be evaluated:

func someExpensiveComputation() -> String { ... }

var foo : String? = "a string"
let str = foo ?? someExpensiveComputation()

In this example, as foo is non-nil, someExpensiveComputation() will not be called.

You can also chain multiple nil coalescing statements together:

var foo : String?
var bar : String?

let baz = foo ?? bar ?? "fallback string"

In this example baz will be assigned the unwrapped value of foo if it is non-nil, otherwise it will be assigned the unwrapped value of bar if it is non-nil, otherwise it will be assigned the fallback value.

Feedback about page:

Feedback:
Optional: your email if you want me to get back to you:



Table Of Contents