[swift-evolution] Pitch: disallow `()` from Switch statement case satisfaction

Haravikk swift-evolution at haravikk.me
Thu Oct 13 13:04:54 CDT 2016


> On 13 Oct 2016, at 16:19, Nevin Brackett-Rozinsky via swift-evolution <swift-evolution at swift.org> wrote:
> 
> If I might be so bold, perhaps we should consider the opposite. Suppose you have a conditional statement inside a loop. It would be easier for the reader to understand what it does if “break” meant the same thing regardless of whether you used “if” or “switch” for the condition.
> 
> Right now, these two loops behave differently:
> 
> let seq = [1, 2, 3]
> 
> for x in seq {  // prints ! 2 ! 3 !
>     switch x {
>     case 1: break
>     case _: print(x)
>     }
>     print("!")
> }
> 
> for x in seq {  // prints nothing
>     if x == 1 {
>         break
>     } else {
>         print(x)
>     }
>     print("!")
> }
> 
> In particular, the current behavior of “break” means you need to label the loop if you want to break out of it from a “switch”, but not from an “if”. This is at least inconsistent.
> 
> Nevin

That's an interesting point, but seems like it might be better covered by using a different keyword; e.g- we could use "end" for a loop and "break" for a switch? "End" feels more consistent with "continue", but we get into the pesky "terms of art" territory =)

I don't think that requiring use of () is the right solution though, as it is admittedly kind of strange, I just seem to have picked up it in one tutorial and then never stopped using it =D


More information about the swift-evolution mailing list