这个操作符可以用来快速的对 nil 进行判断,当左侧的值是 非 nil时返回其value左侧的值,为nil时返回其右侧的值。
两个条件:表达式a必须是可选类型,默认值b的类型必须要和a存储值的类型一致
空合并运算符 (a ?? b) 将对可选类型a进行空判断,如果a包含一个值就进行解封,否则就返回一个默认值b
var level: Int?
let startLevel = 1
let currentLevel = level ?? startLevel
print("currentLevel==\(currentLevel)")
let name: String? = "老王"
let name1: String? = nil
// ?? 运算符的优先级低于 + 号,注意使用的时候加上括号啊
print(name ?? "" + "你好")
print(name1 ?? "" + "你好")
addNumber(x: 3, y: nil)
func addNumber(x: Int?, y: Int?){
// 1.强制解包有风险,如果 x 或者 y 有为 nil 会崩
// print(x! + y!)
// 2.使用 if 判断,但是如果直接使用if,参数很多的时候,会使代码很丑
if x != nil && y != nil {
print(x! + y!)
} else {
print("x 或者 y 为nil")
}
// 使用 运算符 ??
print((x ?? 0) + (y ?? 0))
}