【发布时间】:2016-10-08 00:12:15
【问题描述】:
我在尝试学习 swift 基础知识时遇到了这个问题:
假设我们有一个 dic:
var presidentialPetsDict = ["Barack Obama":"Bo", "Bill Clinton": "Socks", "George Bush": "Miss Beazley", "Ronald Reagan": "Lucky"]
并删除“George Bush”条目并将其替换为“George W. Bush”条目:
我做了什么:
var oldvalue = presidentialPetsDict.removeValueForKey("George Bush")
if let value = oldvalue
{
presidentialPetsDict["George W. Bush"] = value
}else
{
print("no matching found")
}
因为我相信 removeValueForKey 方法会返回一个可选值,以防键“George Bush”不会返回值而是 nil,所以我们需要使用 if let 安全地解开它。 但是,解决方案代码如下所示:
var oldValue = presidentialPetsDict.removeValueForKey("Georgee Bush")
presidentialPetsDict["George W. Bush"] = oldValue
我不明白的部分是,如果我们想将 nil 分配给 var,我们通常会这样做:
var value:String?
value = nil
但是即使方法返回 nil,上面的解决方案代码仍然有效,有人可以解释它为什么有效,因为我认为在解决方案中我们根本没有将 oldValue 声明为可选。
【问题讨论】:
-
请在下面回答我。