空合运算符(a ?? b):空合运算符是对可选类型a进行判断,如果a的值为nil,则返回b;如果a不为nil,则直接返回a!(对a强制拆包),不再运行b(也叫短路运算),这个运算是简化了三目运算符 return a != nil ? a! : b
一般情况下,使用空合运算符需要满足两个条件:
1.a必须是可选类型(optionals)
2.默认值b的类型和可选类型a存储的值一致
example:
var aStr :String? = "a" var defaultStr :String = "default" let str = aStr ?? defaultStr print(str)
输出: "a"
//---------------这里配合三目运算符做举例说明---------------------
//第一种 var names:String? if names != nil { //不为空时强制解包,不会报错 names! }else { print("names = nil"); } // 第二种 names = "lisi" let name2 = (name != nil) ? names! : "zhangan"
//----------------------空合运算符方式:-----------------------------
// 如果 name4有值,就强制解包,并返回,如果没有值,就返回右面的值 var name4 = "lisi" let ni = name4 ?? "zhangsan"