You are right in your Swift 2 code
guard let check = person.check() where dont else { }
the conditional binding let check = ... first performed let check = ... , and only if this is done does the boolean condition dont be checked. you can use
guard dont, let check = person.check() else { }
to check the status of boolean first.
This "asymmetry" in the syntax was removed in Swift 3: All security items are separated by commas, and where keyword is no longer used. So you have
guard let check = person.check(), dont else { } // or guard dont, let check = person.check() else { }
Conditions are checked from left to right during a short circuit, that is, if one condition is not satisfied, then the else-block is executed without checking the remaining conditions.
Martin r
source share