美文网首页Swift编程
合并空值运算符

合并空值运算符

作者: 码农UP2U | 来源:发表于2020-01-05 00:20 被阅读0次

    今天继续学习 极客时间张杰 老师的 Swift 的课程,看的真是辛苦,感觉讲的好慢。我这强迫症又不愿意跳着学。

    合并空值运算符

    合并空值运算符使用两个问号表示,类似 a ?? b,表示当 a 成立时结果为 a,否则为 b。这个运算符类似三目运算符,而且在其他语言中也有这种运算符。

    简单的看一下这个运算符。

    • 合并空值运算符 a ?? b 如果可选项 a 有值则展开,如果没有值,是 nil,则返回默认值 b
    • 表达式 a 必须是一个可选类型。表达式 b 必须与 a 的存储类型相同(这个实际测试只是给出提示,并没有报错)
    • 实际上是三元运算符作用到 Optional 上的缩写 a != nil ? a! : b
    • 如果 a 的值是非空的,b 的值将不会被考虑,也就是合并空值运算符是短路的

    代码示例

    以下是一些合并空值的代码示例。

    let aa: Int? = nil
    let bb = 8
    // 输出 8
    print(aa ?? bb)
    
    let aaa: String? = nil
    // 输出 8
    print(aaa ?? bb)
    
    let aaaa: Int = 88
    // 输出 88
    print(aaaa ?? bb)   // 此句会有警告,原因是 aaaa 不是可选类型
    
    let aaaaa: String = "abc"
    print(aaaaa ?? bb)      // 此句会有警告,原因是 aaaaa 不是可选类型
    
    func getNumber() -> Int {
        print("in getNumber")
        return 8
    }
    
    print(aaaa ?? getNumber())  // 此句会有警告,原因是 aaaa 不是可选类型
    print(aa ?? getNumber())
    
    // 两个可选类型做加法,使用合并空值运算,可以省去很多判断
    func addTwoNumber(num1: Int?, num2: Int?) -> Int {
        return (num1 ?? 0) + (num2 ?? 0)
    }
    
    print(addTwoNumber(num1: nil, num2: nil))
    


    我的微信公众号:“码农UP2U”

    相关文章

      网友评论

        本文标题:合并空值运算符

        本文链接:https://www.haomeiwen.com/subject/oabxactx.html