一尘不染

在Swift中用逗号分隔多个if条件

swift

我们已经知道可以在多个if /guard语句中使用多个可选绑定,方法是用逗号分隔,但不能使用&&例如

// Works as expected
if let a = someOpt, b = someOtherOpt {
}
// Crashes
if let a = someOpt && b = someOtherOpt {
}

在操场上玩耍时,逗号式格式似乎也适用于布尔条件,尽管我在任何地方都找不到。例如

if 1 == 1, 2 == 2 {
}
// Seems to be the same as
if 1 == 1 && 2 == 2 {
}

这是用于评估多个布尔条件的公认方法吗,,其行为是否与boolean条件相同&&或在技术上有所不同?


阅读 268

收藏
2020-07-07

共1个答案

一尘不染

实际上结果是不一样的。假设您在if和&&之间有2条陈述。如果在第一个语句中使用可选绑定创建一个let,则在第二个语句中将看不到它。相反,您将使用逗号。

逗号示例:

if let cell = tableView.cellForRow(at: IndexPath(row: n, section: 0)), cell.isSelected {
    //Everything ok
}

&&示例:

if let cell = tableView.cellForRow(at: IndexPath(row: n, section: 0)) && cell.isSelected {
    //ERROR: Use of unresolved identifier 'cell'              
}

希望这可以帮助。

2020-07-07