看一下Swift example:
if let sourceViewController = sender.sourceViewController as? MealViewController, meal = sourceViewController.meal {
...
}
该文件指出:
...代码将视图控制器分配给本地 常量sourceViewController,并检查是否有餐属性 在sourceViewController上是nil。
问题:当用逗号分隔时,Swift是否允许你在if语句中有多个条件(如本例中MealViewController
之后的逗号)?
在文档中没有看到这个。
答案 0 :(得分:45)
写的时候是的
if let a = optA, let b = optB, let c = optC {
}
仅当所有作业都已正确完成时,Swift才会执行IF
的正文。
此技术的另一个特点是:分配以顺序完成。
因此,只有将值正确分配给a
,Swift才会尝试为b
分配值。等等。
这允许您像以前一样使用之前定义的变量/常量
if let a = optA, let b = a.optB {
}
在这种情况下(在第二次分配中),我们可以安全地使用a
,因为我们知道如果执行了该代码,那么a
已填充了有效值
答案 1 :(得分:15)
是的,swift docs可以这么说;
您可以在单个if语句中包含多个可选绑定,并使用where子句检查布尔条件:
if let firstNumber = Int("4"), secondNumber = Int("42")
where firstNumber < secondNumber {
print("\(firstNumber) < \(secondNumber)")
}
// prints "4 < 42"