Swift if statement - multiple conditions separated by commas?
Yes when you write
if let a = optA, let b = optB, let c = optC {
}
Swift does execute the body of the IF
only if all the optional bindings are properly completed.
More
Another feature of this technique: the assignments are done in order.
So only if a value is properly assigned to a
, Swift tries to assign a value to b
. And so on.
This allows you to use the previous defined variable/constant like this
if let a = optA, let b = a.optB {
}
In this case (in second assignment) we are safely using a
because we know that if that code is executed, then a
has been populated with a valid value.
Yes. Swift: Documentation: Language Guide: The Basics: Optional Binding says:
You can include as many optional bindings and Boolean conditions in a single
if
statement as you need to, separated by commas. If any of the values in the optional bindings arenil
or any Boolean condition evaluates tofalse
, the wholeif
statement’s condition is considered to befalse
. The followingif
statements are equivalent: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"