空合运算符(a ?? b)将对可选类型 a 进行空判断,如果a包含一个值就进行解包,否则就返回一个默认值 b。表达式a必须是Optional类型。默认值b的类型必须要和a存储值的类型保持一致。
空合运算符是对以下代码的简短表达方法。
a != nil ? a! : b
空合运算符(??)提供了一种更为优雅的方式去封装条件判断和解封两种行为,显得简洁以及更具可读性。
注:如果a为非空值(non-nil),那么值b将不会被计算。这也就是所谓的短路求值。
下文例子采用空合运算符,实现了在默认颜色名和可选自定义颜色名之间抉择。
let defalutColorName = "red" //默认值为nil var userDedinedColorName: String? //userDefinedColorName的值为空,所以colorNameToUse的值为“red” var colorNameToUse = userDefinedColorName ?? defaultColorName