swift中的if let声明和选项

swift中的if let声明和选项,swift,Swift,我对期权中的“if-let”声明有一个问题 基本上,我认为如果语句是这样工作的 'if(true){(此语句将执行)} if(false){(此语句将不执行)} 但在“if-let”语句中,它的工作方式与上面的不同 代码如下: var isDeleted: Bool? isDeleted = false if let deleted = isDeleted { print(deleted) } 在上面的代码中,您可能知道“let deleted=isDeleted”返回“false” 但是,“

我对期权中的“if-let”声明有一个问题

基本上,我认为如果语句是这样工作的 'if(true){(此语句将执行)} if(false){(此语句将不执行)}

但在“if-let”语句中,它的工作方式与上面的不同

代码如下:

var isDeleted: Bool?
isDeleted = false
if let deleted = isDeleted { print(deleted) }
在上面的代码中,您可能知道“let deleted=isDeleted”返回“false” 但是,“打印(删除)”已成功执行
有人知道为什么吗?

您的第一行声明了一个可选的布尔值。这没有价值。 下一行将可选布尔值isDeleted设置为false

我认为你困惑的是if-let语句的作用

将其视为安全的出租声明。

考虑这一行代码:

let deleted = isDeleted
如果您使用此代码代替If-let语句,它将运行得很好。但如果你从未初始化ISDELETE,你的应用程序就会崩溃

在更高级的场景中,您可能不知道值是否已初始化,这就是if let的作用

如果let语句没有错误,则将执行括号内的代码,并声明和初始化一个临时变量(在本例中为“deleted”)

如果出现错误,您的应用程序将不会崩溃,括号内的代码将不会运行


希望这能有所帮助。

这个问题和类似的问题以前都被问过,比如看一下
,如果let
不关心布尔值的实际值,它只关心可选值是否有一个值,或者您的链接是否为
nil
@milo526 thx,但是我想知道这个概念的基本知识。我知道可选绑定。那么可选绑定是否会覆盖“if”语句的默认函数?@luk2302 thx用于您的全部回复!如果有一个布尔条件被包装在一个可选函数中,并且只想有条件地进入某个块(比如
If
体),前提是1)不是
nil
,2)如果是这样,
true
值,则不必使用可选绑定,只需使用
nil
合并运算符(
)如果可选值为
nil
,则测试包装的条件或使用默认值(
false
)。例如:
如果删除??false{print(“true!”)}
。只有当
被删除时,才会打印
“true!”
,其中包含
。一些(true)