我在Optionals的上下文中有一个关于'if let'语句的问题。
基本上,我认为if语句就像这样 'if(true){(此语句将执行)} if(false){(此语句不会执行)}
但是在'if let'语句中,它不像上面那样工作。
以下是代码:
var isDeleted: Bool?
isDeleted = false
if let deleted = isDeleted { print(deleted) }
在上面的代码中,也许你知道'let deleted = isDeleted'返回'false' 但是,'print(deleted)'已成功执行 有谁知道为什么?
答案 0 :(得分:2)
你的第一行声明了一个可选的布尔值。这没有价值。 下一行将isDeleted(可选的布尔值)设置为false。
我认为你所困惑的是if let语句的作用。
将其视为安全的声明。
考虑这行代码:
let deleted = isDeleted
如果您使用此代码代替if let语句,它将运行得很好。但如果你从未初始化isDeleted,你的应用程序就会崩溃。
在更高级的场景中,您可能不知道该值是否已初始化,以及if允许的位置。
如果let语句没有错误,那么括号内的代码将被执行,并且将声明和初始化临时变量(在这种情况下"删除")。
如果出现错误,您的应用不会崩溃,括号内的代码也不会运行。
希望这有帮助。