Swift4.0_空合并运算符 (a ?? b)

这个操作符可以用来快速的对 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))
    
}

你可能感兴趣的:(Swift4.0_空合并运算符 (a ?? b))