Swift if语句 – 用逗号分隔多个条件?

看一个Swift的例子 :

if let sourceViewController = sender.sourceViewController as? MealViewController, meal = sourceViewController.meal { ... } 

该文件指出:

…代码将该视图控制器分配给本地常量sourceViewController,并检查sourceViewController上的用餐属性是否为零。

问题:Swift是否让你在用逗号隔开的if语句中有多个条件(如本例中的MealViewController之后的逗号)?

在文档中没有看到这个。

是的,当你写

 if let a = optA, let b = optB, let c = optC { } 

只有所有的任务都正确完成, Swift才会执行IF的主体。

更多

该技术的另一个特点是分配按顺序完成。

所以只有当一个值被正确地赋值给a ,Swift才会尝试给b赋值。 等等。

这允许你使用这个以前定义的variables/常量

 if let a = optA, let b = a.optB { } 

在这种情况下(在第二个任务中),我们正在安全地使用a因为我们知道如果代码被执行,那么a已经填充了一个有效的值。

是的, 迅速的文档有这个说法。

您可以在单个if语句中包含多个可选绑定,并使用where子句来检查布尔条件:

 if let firstNumber = Int("4"), secondNumber = Int("42") where firstNumber < secondNumber { print("\(firstNumber) < \(secondNumber)") } // prints "4 < 42"