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

时间:2016-02-16 14:18:29

标签: ios swift if-statement optional

看一下Swift example

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

该文件指出:

  

...代码将视图控制器分配给本地   常量sourceViewController,并检查是否有餐属性   在sourceViewController上是nil。

问题:当用逗号分隔时,Swift是否允许你在if语句中有多个条件(如本例中MealViewController之后的逗号)?

在文档中没有看到这个。

2 个答案:

答案 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"