美文网首页
17.可选链

17.可选链

作者: LucXion | 来源:发表于2021-07-21 09:48 被阅读0次

    可选链式调用是一种可以在当前值可能为 nil 的可选值上请求和调用属性、方法及下标的方法。如果可选值有值,那么调用就会成功;如果可选值是 nil,那么调用将返回 nil。多个调用可以连接在一起形成一个调用链,如果其中任何一个节点为 nil,整个调用链都会失败,即返回 nil

    通过在想调用的属性、方法,或下标的可选值后面放一个问号(?),可以定义一个可选链。这一点很像在可选值后面放一个叹号(!)来强制解包它的值。它们的主要区别在于当可选值为空时可选链式调用只会调用失败,然而强制解包将会触发运行时错误

    通过可选链调用无返回值的函数如何判断是否调用成功

    通过可选链式调用给属性赋值会返回 Void?,通过判断返回值是否为 nil 就可以知道赋值是否成功

    class Name {
        var xing:String
        var ming:String
        init(xing:String,ming:String){
            self.xing = xing
            self.ming = ming
        }
        func printName() {
            print("姓:\(xing) 名:\(ming)")
        }
    }
    var p = Person()
    p.info = Name.init(xing: "Li", ming: "Ming")
    if let result = p.info?.printName() {
        print("调用成功,result = \(result)")// 打印的空
    }else {
        print(p.info?.printName()) // 打印的 nil
    }
    

    访问可选类型的下标

    var dict = [1:[1,1]]
    if let unit1 = dict[1]?[1] {
        dict[1]?[1] = 2
    }else {
        print("可选调用失败")
    }
    print(dict)
    

    连接多层可选链式调用

    • 通过可选链式调用访问一个 Int 值,将会返回 Int?,无论使用了多少层可选链式调用。

    • 类似的,通过可选链式调用访问 Int? 值,依旧会返回 Int? 值,并不会返回 Int??

    相关文章

      网友评论

          本文标题:17.可选链

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