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))
    
}

推荐阅读更多精彩内容

  • 关于 Swift 重要这个文档所包含的准备信息, 是关于开发的 API 和技术的。这个信息可能会改变, 根据这个文...
    无沣阅读 2,700评论 1 27
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 865评论 1 3
  • 常量与变量使用let来声明常量,使用var来声明变量。声明的同时赋值的话,编译器会自动推断类型。值永远不会被隐式转...
    莫_名阅读 45评论 0 0
  • 《ilua》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 1...
    叶染柒丶阅读 3,246评论 0 5
  • 昨天晚上,睡得不好。 刚刚躺下去就感觉睡不着,翻来翻去的翻到1点多才迷迷糊糊地睡着了。没想到,四点左右儿子又醒过来...
    苏洲园林阅读 127评论 0 2