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

Ios Swift if语句-用逗号分隔的多个条件?,ios,swift,if-statement,optional,Ios,Swift,If Statement,Optional,看看Swift: 该文件指出: 。。。该代码将该视图控制器指定给本地控制器 常量sourceViewController,并检查是否 sourceViewController上的值为零 问题:当用逗号分隔时,Swift是否允许在if语句中包含多个条件(如本例中在MealViewController后加逗号) 在文档中还没有看到这一点。是的,当你写的时候 if let a = optA, let b = optB, let c = optC { } 只有在所有分配都正确完成时,Swift才会执

看看Swift:

该文件指出:

。。。该代码将该视图控制器指定给本地控制器 常量sourceViewController,并检查是否 sourceViewController上的值为零

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

在文档中还没有看到这一点。

是的,当你写的时候

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
已填充有效值。

是。说:

您可以根据需要在单个
if
语句中包含任意多个可选绑定和布尔条件,并用逗号分隔。如果可选绑定中的任何值为
nil
或任何布尔条件的计算结果为
false
,则整个
If
语句的条件被视为
false
。以下
如果
语句等效:

if let firstNumber = Int("4"), let secondNumber = Int("42"), firstNumber < secondNumber && secondNumber < 100 {
    print("\(firstNumber) < \(secondNumber) < 100")
}   
// Prints "4 < 42 < 100"

if let firstNumber = Int("4") {
    if let secondNumber = Int("42") {
        if firstNumber < secondNumber && secondNumber < 100 {
            print("\(firstNumber) < \(secondNumber) < 100")
        }   
    }   
}   
// Prints "4 < 42 < 100"
如果让firstNumber=Int(“4”),让secondNumber=Int(“42”),firstNumber

在optionnal binding是的情况下,对于其余的情况,使用正常的if语法来混合条件。我自己从来都不知道
where
子句,直到在文档中查找它,你每天都会学到一些新的东西…:),只需将
where
替换为逗号即可。仅供参考,
中的
where
子句在Swift 4+中不再有效。我相信它已在Swift 3中删除,但我找不到引用)使用逗号是否与使用&&I.e.和相同?如果让a=optA&&let b=optB&&let c=optC{@mretondo,至少在Swift 4.1中,您的示例给出了预期的错误“,”连接多子句条件的部分,以及通过将
&&
替换为
来修复的建议。使用逗号是一种确保没有可选项的方法,而使用
&
表示布尔测试。使用
&
y您必须这样说:
如果optA!=nil&&optB!=nil&&optC!=nil{
。或者,如果您需要块内的那些未包装变量,您可以再次使用逗号:
如果让a=optA,a>1,让b=optB,b>1,让c=optC,c>1{返回a+b+c}
if let firstNumber = Int("4"), let secondNumber = Int("42"), firstNumber < secondNumber && secondNumber < 100 {
    print("\(firstNumber) < \(secondNumber) < 100")
}   
// Prints "4 < 42 < 100"

if let firstNumber = Int("4") {
    if let secondNumber = Int("42") {
        if firstNumber < secondNumber && secondNumber < 100 {
            print("\(firstNumber) < \(secondNumber) < 100")
        }   
    }   
}   
// Prints "4 < 42 < 100"