我目前正在学习Swift,并且编写了以下愚蠢的代码,但结果显示如下:“当英雄处于2级时,怪物是Optional(“ sihso”)。我不知道为什么那里有“可选”一词。
var level = 2
var mons = [1 : "SHhi", 2 : "sihso", 3 : "shssh"]
var monster = mons [level]
print("The monster is \(monster)" + " when the hero is at level \(level)")
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()
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句