空合运算符 ??(Nil Coalescing Operator)

空合运算符(a ?? b):空合运算符是对可选类型a进行判断,如果a的值为nil,则返回b;如果a不为nil,则直接返回a!(对a强制拆包),不再运行b(也叫短路运算),这个运算是简化了三目运算符 return a != nil ? a! : b
来个例子:

    var aStr :String? = "a"
    var defaultStr :String = "default"
        let str = aStr ?? defaultStr
        println(str)

输出str的值是a
一般情况下,使用空合运算符需要满足两个条件:
1.a必须是可选类型(optionals)
2.默认值b的类型和可选类型a存储的值一致

当然还有另外一种情况,就是当默认值b也是一个可选类型的时候(这个可选类型存储的值和a存储的值类型一致),举个例子:

 var aStr :String? = "b"
    var bStr :String?
    let str = aStr ?? bStr
println(str)此时输出的结果是optional(“b”)。为什么返回一个可选类型呢???
        func ??<T>(optional: T?, defaultValue: @autoclosure () -> T?) -> T?
        func ??<T>(optional: T?, defaultValue: @autoclosure () -> T) -> T

可以看下这两个方法,说是叫运算符,其实是一个func。当默认值为可选类型时,返回的数据类型就是可选类型。所以使用空合运算符需要满足两个条件
1.a必须是可选类型(optionals)
2.默认值b的类型和可选类型a存储的值一致,也可以和a的类型一样

引用:《The Swift Programming Language》
如有问题欢迎指正,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值