[Python-Dev] PEP 275: "Switching on Multiple Values", Rev 1.1

M.-A. Lemburg mal@lemburg.com
Thu, 15 Nov 2001 11:07:40 +0100


"M.-A. Lemburg" wrote:
> 
> Thomas Wouters wrote:
> >
> > On Tue, Nov 13, 2001 at 03:32:55PM +0100, Jack Jansen wrote:
> >
> > > Even though I'm not sure I like the switch idea (and I won't even contemplate
> > > how Guido will react when he comes back and sees what we've been spending our
> > > time on:-) there's one very special case of switch that I would like, and
> > > that's the Algol 68 style switch on type. If we had something like
> > >   def foo(x):
> > >      switch type(x):
> > >         case int:
> > >           do something
> > >         case string:
> > >           do something else
> > > this would be a nice point to hook into for something that tries to compile
> > > Python to C or somesuch.
> >
> > Unfortunately, type-names/objects aren't compile-time constants, so we can't
> > implement this without some kind of namespace-modification-notification
> > technique. Hmm... Or perhaps we could do the normal lookup, compare the
> > then-current 'int' vs. the one we looked up, and if they aren't equal
> > re-initialize the jump dict.... But *shudder*.
> 
> Dang. You're right -- I overlooked that "detail". 

After some more tweaking... how's this:

         switch type(x).__name__:
             case 'int':
                 SUITE
             case 'string':
                 SUITE

(note the string constants)

-- 
Marc-Andre Lemburg
CEO eGenix.com Software GmbH
______________________________________________________________________
Consulting & Company:                           http://www.egenix.com/
Python Software:                        http://www.lemburg.com/python/