Ios Swift if语句-用逗号分隔的多个条件?
看看Swift: 该文件指出: 。。。该代码将该视图控制器指定给本地控制器 常量sourceViewController,并检查是否 sourceViewController上的值为零 问题:当用逗号分隔时,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才会执
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"