你可以使用可選鏈來嘗試從子腳本獲取值并檢查子腳本的調(diào)用是否成功,然而,你不能通過可選鏈來設(shè)置子代碼。
注意:
當(dāng)你使用可選鏈來獲取子腳本的時(shí)候,你應(yīng)該將問號放在子腳本括號的前面而不是后面。可選鏈的問號一般直接跟在表達(dá)語句的后面。
下面這個(gè)例子用在Residence類中定義的子腳本來獲取john.residence數(shù)組中第一個(gè)房間的名字。因?yàn)?code style="box-sizing: border-box; -webkit-tap-highlight-color: transparent; -webkit-font-smoothing: antialiased; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 14px; padding: 0px 5px; color: rgb(199, 37, 78); background-color: rgb(248, 248, 248); white-space: nowrap; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; margin: 0px 2px; border: 1px solid rgb(234, 234, 234);">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的后面,在子腳本括號的前面,因?yàn)?code style="box-sizing: border-box; -webkit-tap-highlight-color: transparent; -webkit-font-smoothing: antialiased; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 14px; padding: 0px 5px; color: rgb(199, 37, 78); background-color: rgb(248, 248, 248); white-space: nowrap; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; margin: 0px 2px; border: 1px solid rgb(234, 234, 234);">john.residence是可選鏈試圖獲得的可選值。
如果你創(chuàng)建一個(gè)Residence實(shí)例給john.residence,且在他的rooms數(shù)組中有一個(gè)或多個(gè)Room實(shí)例,那么你可以使用可選鏈通過Residence子腳本來獲取在rooms數(shù)組中的實(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."。