[Python-Dev] Switch statement
Guido van Rossum
guido at python.org
Wed Jun 21 18:26:38 CEST 2006
On 6/21/06, Phillip J. Eby <pje at telecommunity.com> wrote:
> At 03:38 AM 6/21/2006 -0500, Ka-Ping Yee wrote:
> >On Wed, 21 Jun 2006, Phillip J. Eby wrote:
> > > Well, EIBTI and all that:
> > >
> > > switch x:
> > > case == 1: foo(x)
> > > case in S: bar(x)
> > >
> > > It even lines up nicely. :)
> >
> >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)
> >
> >An interesting use case for which this offers no corresponding
> >syntax is
> >
> > case instanceof ClassA: ham(x)
>
> Actually, I was assuming that any other operator besides == and 'in' would
> be relegated to an if-elif chain in the default case, although it's almost
> possible to do that automatically, I suppose.
I've been thinking about generalization to other operators too, but
decided that it would be a mistake. It would be quite clumsy to
explain the exact semantics: if all operators are "==" or "in" an
efficient hash table gets pre-constructed at function definition time,
otherwise, um..., what exactly?
(Note how I've switched to the switch-for-efficiency camp, since it
seems better to have clear semantics and a clear reason for the syntax
to be different from if/elif chains.)
--
--Guido van Rossum (home page: http://www.python.org/~guido/)
More information about the Python-Dev
mailing list