kumarc
(Kumar C)
1
Direct to the point, I would like suggest the guard statement for initializing multiple assignments.
Current Syntax
guard let val1 = Int("1"), let val2 = Int("2"), let val3 = Int("3") else { return }
Proposed Syntax
guard let val1 = Int("1"), val2 = Int("2"), val3 = Int("3") else { return }
This reduces repetitive let or var keyword for every variable/constant we initialize in guard. I believe the new syntax doesn't introduce any confusion to developers.
sjavora
(Šimon Javora)
2
Hey, this was actually explicitly removed by SE-0099 Restructuring Condition Clauses.
7 Likes
Just use this syntax instead
guard let (val1, val2, val3) = (Int("1"), Int("2"), Int("3")) else {
return
}
Avi
5
Initializer for conditional binding must have Optional type, not '(Int?, Int?, Int?)'
I think you need to use guard case let.
Thanks for the correction
// warning: 'guard' condition is always true, body is unreachable
guard case let (val1, val2, val3) = (Int("1"), Int("2"), Int("3")) else {
return
}
// val1: Int? = 1
// val2: Int? = 2
// val3: Int? = 3
You also need to use ? patterns:
// OK
guard case let (val1?, val2?, val3?) = (Int("1"), Int("2"), Int("3")) else {
return
}
// val1: Int = 1
// val2: Int = 2
// val3: Int = 3
1 Like