我正在比较以下代码片段:
var num = Int(numTextField.text!)!
到
if let num = Int(numTextField.text!) {}
有人可以向我解释if if语句如何不需要第二个"!"。 if let块中的赋值是否隐式解包Int可选?如果有,任何人都可以解释工作中的机制吗?
提前致谢!
答案 0 :(得分:12)
当你这样做时
if let num = Int(numTextField.text!){}
它将为您解包该值并检查它是否可以将textfield的值设置为num。如果值为nil,您将能够像这样处理错误
if let num = Int(numTextField.text!){
print("Yes the value is not nil")
}else{
print("Couldn't assign value to num because it's nil")
}
如果你这样做
var num = Int(numTextField.text!)!
并且textfield为nil,您将收到运行时错误,您的应用程序将崩溃。