在许多语言中的一个共同特征,Null Coalescing运算符是一个二进制运算符,常用于缩短类型的表达式:
- x = possiblyNullValue NCO valueIfNull
其中NCO是语言的空合并运算符的占位符。上面的表达式等效于使用三级运算符:
- x = someTestForNotNull( possiblyNullValue ) ? possiblyNullValue : valueIfNull
空合并运算符的优点
>更可读的代码(特别是长的描述性变量名)
>降低排版错误的可能性(测试的var仅键入一次)
>对测试变量不进行双重评估,其中被测变量是一个getter,因为它被访问过一次(或需要缓存它来有意避免双重评估)。
从Swift 2.2(Xcode 6,beta 5)它的?
- var x: Int?
- var y: Int? = 8
- var z: Int = x ?? 9000
- // z == 9000
- z = y ?? 9001
- // z == 8
一个 ?? b相当于下面的代码:
- a != nil ? a! : b
和Beta 6一样,你可以这样做:
- x ?? y ?? 1 == 8