空合运算符(Nil Coalescing Operator)
2016-11-28 本文已影响225人
陌上北辰
空合运算符(a??b)将对可选类型a进行空判断,如果a包含一个值就进行解封,否则就返回一个默认值b,这个运算符有两个条件
. 表达式a 必须是optional类型
.默认值b的类型必须要和a存储值的类型保持一致
空合运算符是对以下代码的简短表达方法
a != nil ? a! : b
代码解释:当可选类型a的值不为空时,进行强制解封(a!)访问a中的值;反之,当a中值为空时,返回默认值b。
注意:如果a为非空(non-nil),那么值b将不会被估值,这也就时所谓的短路求值
eg:
下面代码实现了默认颜色 和可选自定义颜色名之间的抉择
let defaultColorName = "red"
var userDefinedColorName:String? //默认值为nil
var colorNameToUse = userDefinedColorName??defaultColorName
//userDefinedColorName 的值为空,所以colorNameToUse的值为"red"
如果userDefinedColorName:String 不为nil ,colorNameToUse则为userDefinedColorName解包后的值