这并不完全正确,问题是转换为 int 也是可选的。例如,这会崩溃(或者更确切地说,你会得到一个编译错误):
let myDictionary = [3: "3"]
let itemID = "b"
if let myTestKonstant = myDictionary[Int(itemID)] {
print(myTestKonstant)
}
这将是保存方式:
if let itemKey = Int(itemID), let myTestKonstant = myDictionary[itemKey] {
print(myTestKonstant)
}
更新
所以更清楚了,我将解释在不同情况下会发生什么:
itemID
无法转换为Int
: 这意味着itemKey
will be nil
,因此,第二部分甚至不会被测试,并且 if 的内容不会被执行。
itemID
可以转换为Int
,但它不是现有键:在这种情况下itemKey
,将设置为Int
itemID
转换为。然后,将测试第二条语句,但由于itemKey
不会作为现有键找到,myDictionary[itemKey]
因此将返回nil
并再次执行 if 的内容。
itemID
可以转换为Int
作为字典键存在的一个。和前面的情况一样,itemKey
会被设置,并且既然找到了key,myTestKonstant
就会被填充并执行if的内容,除非key对应的值是nil
(如in [3: nil]
)。