字Optional
是那裏,因爲monster
有隱式類型String?
,一個可選的字符串。
當在特定的鍵上查詢字典的值時,它們返回可選類型。給定密鑰的值可能存在也可能不存在。如果不存在,則返回nil
。
所以,我們必須檢查確定我們有價值。
let level = 2
let mons = [1 : "SHhi", 2 : "sihso", 3 : "shssh"]
if let monster = mons[level] {
print("The monster is \(monster) when the hero is at level \(level)")
}
作爲一個說明,如果mons
沒有爲我們通過它的鍵的值,沒有什麼會停止打印(這是最有可能我們想要的)。
如果我們想打印無論哪種方式,最好的辦法可能是使用nil
-coalescing運營商(??
):
let level = 2
let mons = [1 : "SHhi", 2 : "sihso", 3 : "shssh"]
var monster = mons[level] ?? "unknown"
print("The monster is \(monster) when the hero is at level \(level)")
現在,任何時候mons[level]
將返回nil
,monster
反而等於"unknown"
,並且消息將每次打印(並且從不打印Optional()
)。