使用 Optional Chaining 可以让我们拜托很多不惜要的判断和取值,但是使用的时候需要小心。
classToy {
let name :String
init(name:String) {
self.name= name
}
func play(){
print("plya:\(self.name)")
}
}
class Pet {
var toy :Toy?
}
class Child {
var pet :Pet?
}
let xiaoming =Child()
let toyName =xiaoming.pet?.toy?.name
//需要改进为
//使用guard守护
guard lettoyName1 =xiaoming.pet?.toy?.name
else{
// ...
// return
}
// guard后,toyName1就由可选类型变为必选类型了
print(toyName1)
xiaoming.pet?.toy?.play()
//需要改进为
if let result =xiaoming.pet?.toy?.play() {
// ...
}