我目前正在学习swift,并且我编写了以下愚蠢的代码,但结果显示如下:"当英雄处于2级时,怪物是可选的("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)")
Run Code Online (Sandbox Code Playgroud)
这个词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)")
}
Run Code Online (Sandbox Code Playgroud)
作为一个注释,如果 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)")
Run Code Online (Sandbox Code Playgroud)
现在,任何时候mons[level]都会返回nil,monster而不是等于"unknown",并且每次都会打印消息(并且永远不会打印Optional()出来).
| 归档时间: |
|
| 查看次数: |
272 次 |
| 最近记录: |