我们已经知道可以在多个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条件相同&&或在技术上有所不同?
,
实际上结果是不一样的。假设您在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' }
希望这可以帮助。