gpt4 book ai didi

swift - guard 语句中的多个 let 是否与单个 let 相同?

转载 作者:搜寻专家 更新时间:2023-10-30 21:49:04 26 4
gpt4 key购买 nike

在功能上有区别吗:

guard let foo = bar, let qux = taco else { 
...
}

和:

guard let foo = bar, qux = taco else {
...
}

在我看来它们是一样的,不需要额外的 let 吗?

最佳答案

这些在 Swift 3 中是不同的。在这种情况下:

guard let foo = bar, let qux = taco else { 

你说的是“optional-unwrap bar into foo。如果成功,可选将 taco 解包成 qux。如果成功继续。否则......”

另一方面:

guard let foo = bar, qux = taco else {

表示“optional-unwrap bar into foo。作为一个 bool 值,计算赋值语句 qux = taco”因为赋值语句在 Swift 中不返回 bool 值,这是一个语法错误。

此更改允许更灵活的 guard 语句,因为您可以在整个链中混合可选的解包和 bool 值。在 Swift 2.2 中,您必须解包所有内容,然后在 where 子句的末尾进行所有 bool 检查(这有时会导致无法表达条件)。

关于swift - guard 语句中的多个 let 是否与单个 let 相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39710394/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com