可选链(Optional Chaining)
作者:
曹来东 | 来源:发表于
2019-07-16 15:56 被阅读0次
- 如果可选项为
nil
,调用方法,下标,属性失败,结果为nil
- 如果可选项不为
nil
,调用方法,下标,属性成功,结果会被包装成可选项.
- 如果结果本来就是可选项,不会进行再次包装
- 多个
?
可以连接在一起
- 如果链中任何一个节点是
nil
,那么整个链就会调用失败.
class Car {
var price = 0
}
class Dog {
var weight = 0
}
class Person {
var name: String = ""
var dog: Dog = Dog()
var car: Car? = Car()
func age() -> Int {
return 18
}
func eat() {
print("Person eat")
}
func getName() -> String {
return "jack"
}
}
var person: Person? = Person()
var age1 = person!.age()//Int
var age2 = person?.age()//Int?
var name = person?.name// String?
var index = person?[6] // Int?
//如果person为nil,不会调用getName()
person?.name = getName()
if let _ = person?.eat() {//()?
print("eat 调用成功")
}else{
print("eat 调用失败")
}
var dog = person?.dog //Dog?
var weight = person?.dog.weight // Int?
var price = person?.car?.price // Int?
本文标题:可选链(Optional Chaining)
本文链接:https://www.haomeiwen.com/subject/wjdtlctx.html
网友评论