使用 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() {
// ...
}