17.可选链

2021-07-21  本文已影响0人  LucXion

可选链式调用是一种可以在当前值可能为 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)

连接多层可选链式调用

上一篇下一篇

猜你喜欢

热点阅读