var shoppingList = ["item1": "bread", "item2": "milk" ]
if let oldItem = shoppingList.updateValue("honey", forKey: "item2") {
println("old value was \(oldItem)")
}
// This prints out "old value was milk"
但是,如果我这样做
var shoppingList = ["item1": "bread", "item2": "milk" ]
let oldItem = shoppingList.updateValue("honey", forKey: "item2")
println("old value was \(oldItem)")
// This would print out "old value was Optional("milk")
if oldItem != nil {
println("old value was \(oldItem)")
}
// And this prints out the same "old value was Optional("milk")
为什么会出现在这里,而不是出现在第一个示例的 if 语句中?
注意:我正在 playground 版本 6.1.1 (6A2008a) 中对此进行测试。
最佳答案
var shoppingList = ["item1": "bread", "item2": "milk" ]
if let oldItem = shoppingList.updateValue("honey", forKey: "item2") {
println("old value was \(oldItem)")
}
// This prints out "old value was milk"
因为此代码(if let
语句)解包了键“item2
”的值,并将解包后的值存储在 oldItem
中。
如果你只是像这样打印它:
let oldItem = shoppingList.updateValue("honey", forKey: "item2")
println("old value was \(oldItem)")
它将打印Optional("old value was milk")
但是如果键 item2
没有任何值,那么程序就会崩溃。
关于ios - Swift 中的可选项,为什么这个简单的代码不打印可选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28670633/