【发布时间】:2019-10-11 23:10:59
【问题描述】:
我正在尝试安全地解开函数中的字典值。我从另一个有效的问题中找到了一个 sn-p,但我在打印时不得不强制打开它。只有在有确定的价值可用时才有效。
func emailAddress(for name: String) -> String? {
let emails = ["daniel":"danielsenga@yahoo.com","Kevin":"Kevin@gmail.com"]
let email = emails[name ?? "none"]
return email
}
print(emailAddress(for: "daniel" )!)
这段代码在工作时会打开和关闭。我更喜欢使用 if-let 安全地解包它,但是当我输入此代码来解包时。
func emailAddress(for name: String) -> String? {
let emails = ["daniel":"danielsenga@yahoo.com","Kevin":"Kevin@gmail.com"]
if let email = emails[name] {
print(email)
} else {
print("There is no email address")
}
return email
}
Swift 给了我各种各样的错误,我不确定问题出在哪里。可选项已经令人困惑,现在对于仅作为可选项的字典来说,打开包装对我来说是一场噩梦。当我使用在线示例时,它们可以工作,但我自己的实现是一场灾难。
我还看到 电子邮件[姓名 ?? "none"] 是一个 swift 5 的功能。这会是个问题吗?
【问题讨论】:
-
??被称为 nil 合并运算符。它仅用于在您的对象是可选的情况下指定默认值 -
您需要在打印后返回电子邮件,并在您的方法结束时返回 nil 而不是电子邮件。不要忘记删除
?? “none”这是没有意义的
标签: swift function dictionary