空合运算符(Nil Coalescing Operator)

空合运算符(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解包后的值

你可能感兴趣的:(空合运算符(Nil Coalescing Operator))