[Python-Dev] Switch statement
Guido van Rossum
guido at python.org
Thu Jun 22 17:20:48 CEST 2006
On 6/22/06, Roger Miller <rogermiller at alum.mit.edu> wrote:
> Part of the readability advantage of a switch over an if/elif chain is
> the semantic parallelism, which would make me question mixing different
> tests in the same switch. What if the operator moved into the switch
> header?
>
> switch x ==:
> case 1: foo(x)
> case 2, 3: bar(x)
>
> switch x in:
> case (1, 3, 5): do_odd(x)
> case (2, 4, 6): do_even(x)
>
> "switch x:" could be equivalent to "switch x ==:", for the common case.
That's difficult (I mean impossible) for Python's parser, since x ==
is also the legal start of an expression.
> I've also been wondering whether the 'case' keyword is really necessary?
> Would any ambiguities or other parsing problems arise if you wrote:
>
> switch x:
> 1: foo(x)
> 2: bar(x)
>
> It is debatable whether this is more or less readable, but it seemed
> like an interesting question for the language lawyers.
That's no problem for the parser, as long as the expressions are
indented. ABC did this.
But I think I like an explicit case keyword better; it gives a better
error message if the indentation is forgotten.
--
--Guido van Rossum (home page: http://www.python.org/~guido/)
More information about the Python-Dev
mailing list