= 3
let b = 4
// 如果a不为nil则对a进行解包,赋值将b的值付给c
let c = a != nil ? a! : b
我们使用??...b // 如果a为nil则使用b的值替换a的值,如果a不为nil,则对a解包然后将值付给b
我们再看一个例子
let a:Int??? = 3
let b = 4
let c = a ??...d.return
需求:在一个数组中查找是否存在一个整数,如果找到返回true 没有返回false
let nums = [1,2,3,6,7,9,10]
func findNum(num:Int)->...= nil {
} // 编译警告 - 总是成功
if let myName = name3{
} // 编译错误 - name3 不是可选值
结论:
只有可选值或者解包过的可选值,判断是否为nil是有意义的...对非可选值使用解包判断方式总是失败的。