[Python-Dev] Simple Switch statement (original) (raw)
Raymond Hettinger rhettinger at ewtllc.com
Mon Jun 26 17:46:09 CEST 2006
- Previous message: [Python-Dev] Simple Switch statement
- Next message: [Python-Dev] Simple Switch statement
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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
- Previous message: [Python-Dev] Simple Switch statement
- Next message: [Python-Dev] Simple Switch statement
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]