Michael Urman wrote: > I'm trying to find some real world examples of a pygame event loop > >that really show the benefit of supporting named constants and >expressions. I may mess up irrelevant details, but the primary case >looks something like the following (perhaps Pete Shinners could point >us to a good example loop online somewhere): > > for event in pygame.event.get(): > if event.type == pygame.KEYDOWN: ... > elif event.type == pygame.KEYUP: ... > elif event.type == pygame.QUIT: ... > >Here all the event types are integers, but are clearly meaningless as >integers instead of an enumeration. I'd be sorely disappointed with >the addition of a switch statement that couldn't support this as >something like the following: > > for event in pygame.event.get(): > switch event.type: > case pygame.KEYDOWN: ... > case pygame.KEYUP: ... > case pygame.QUIT: ... > > With the simplified proposal, this would be coded with an inverse mapping:
for event in pygame.event.get(): switch eventmap[event.type]: case 'KEYDOWN': ... case 'KEYUP': ... case 'QUIT': ... Hopefully, the static() proposal will work-out and the mapping won't be necessary. If it does work-out, you'll also get more error-checking than you get with either the if-elif version or the simplified switch-case. > >I also would like to see a way to use 'is' instead of (or inaddition >to) '==' for the comparison, but I don't have any use cases behind >this. > > If speed is the goal, this isn't necessary. The internal equality check takes a shortcut in the event of an identity match. OTOH, if the goal is having several distinct cases that are equal but not identical, then that's another story. I suggest leave the initial switch syntax as simple as possible and just switch on id(object). Raymond _______________________________________________ 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