JEP325: Switch expressions spec
Guy Steele
guy.steele at oracle.com
Mon Apr 23 18:32:26 UTC 2018
> On Apr 23, 2018, at 2:27 PM, Guy Steele <guy.steele at oracle.com> wrote:
>
> Good point, Rémi. However, note that
>
> case pat1, pat2 -> s
>
> is equally too close to
>
> case pat1 -> pat2 -> s
>
> and again they have very different meanings.
>
> We have to admit that there is room to blunder with this syntax.
>
> One way out would be to use a different arrow for `switch` statements:
>
> switch (x) {
> case pat1 => case pat2 => s1;
> case pat3 => pat4 -> s2;
> case pat5, pat6 => s2;
> case pat7, pat8 => pat9 -> s4;
> }
As a careful coder, if I did not have a separate arrow `=>` (and probably even if I did), I would use formatting and parentheses to convey my intent:
switch (x) {
case pat1 ->
case pat2 -> s1;
case pat3 -> (pat4 -> s2);
case pat5, pat6 -> s2;
case pat7, pat8 -> (pat9 -> s4);
}
—Guy
More information about the amber-spec-observers
mailing list