Ka-Ping Yee wrote:
 > Hmm, this is rather nice.  I can imagine possible use cases for
 >
 >    switch x:
 >        case > 3: foo(x)
 >        case is y: spam(x)
 >        case == z: eggs(x)

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.

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.
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to