你可以使用可選鏈來嘗試從子腳本獲取值并檢查子腳本的調(diào)用是否成功,然而,你不能通過可選鏈來設置子代碼。
注意:
當你使用可選鏈來獲取子腳本的時候,你應該將問號放在子腳本括號的前面而不是后面??蛇x鏈的問號一般直接跟在表達語句的后面。
下面這個例子用在Residence類中定義的子腳本來獲取john.residence數(shù)組中第一個房間的名字。因為john.residence現(xiàn)在是nil,子腳本的調(diào)用失敗了。
if let firstRoomName = john.residence?[0].name {
println("The first room name is \(firstRoomName).")
} else {
println("Unable to retrieve the first room name.")
}
// 打印 "Unable to retrieve the first room name."。
在子代碼調(diào)用中可選鏈的問號直接跟在john.residence的后面,在子腳本括號的前面,因為john.residence是可選鏈試圖獲得的可選值。
如果你創(chuàng)建一個Residence實例給john.residence,且在他的rooms數(shù)組中有一個或多個Room實例,那么你可以使用可選鏈通過Residence子腳本來獲取在rooms數(shù)組中的實例了:
let johnsHouse = Residence()
johnsHouse.rooms += Room(name: "Living Room")
johnsHouse.rooms += Room(name: "Kitchen")
john.residence = johnsHouse
if let firstRoomName = john.residence?[0].name {
println("The first room name is \(firstRoomName).")
} else {
println("Unable to retrieve the first room name.")
}
// 打印 "The first room name is Living Room."。