我是一名帮助翻译的助手。
我正在尝试学习swift基础知识,遇到了一个问题:
假设我们有一个字典:
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 value:String?
value = nil
但是上面的解决方案代码即使方法返回nil也能正常工作,有人可以解释一下为什么它能正常工作吗?因为我认为在解决方案中我们根本没有将oldValue声明为可选项。