On Fri, Feb 28, 2014 at 9:02 PM, Marko Rauhamaa <ma...@pacujo.net> wrote: > PS On the topic of enums, when are we getting support for a switch > statement?
I don't see that they're particularly connected. In my C code, I've used enums frequently as quick constants, often never switching on them. Conversely, I often use switch in C code with either integer or character constants. (ASCII character, of course, as that's all you get.) Take this, for example, from my C++ MUD client: enum {IS=0x00,ECHO=0x01,SEND=0x01,SUPPRESSGA=0x03,TERMTYPE=0x18,NAWS=0x1F,SE=0xF0,GA=0xF9,SB,WILL,WONT,DO=0xFD,DONT,IAC=0xFF}; That one happens to be used in a switch at one point, but it's also used in other ways, like this: static char naws[]={IAC,SB,NAWS,0,0,0,0,IAC,SE}; (The actual window size gets patched in separately, in case you're curious... but I suspect most people here won't be aware that IAC SB NAWS means Interpret-As-Command, Subnegotiation Begin, Negotiate About Window Size, and that this is a TELNET command sequence.) With bit flags, they'll never be used in switch: enum //Bitflags in hackity { HACK_ATAT=1, //Perform @@ -> fill-in translation HACK_AUTOEDIT=2, //Respond to the autoedit markers [now active by default] }; ... if (hackity&HACK_ATAT) ... Sometimes, they're just states, and they're assigned and/or compared for equality: enum {ic, court, citizen, trivia, sports, chancount} lastlinetype; Some things check if (lastlinetype == ic), but nothing ever switches on it. Meanwhile, here's a switch block from Gypsum that will never use enumerations: switch (max(delay,base)) { case 0..59: ... handling for <1 minute ... case 60..3599: ... handling for <1 hour ... default: ... handling for >= 1 hour ... } No, the features are quite independent. Python currently has dispatch tables and if/elif chains, and a strong cultural aversion to switch. You could change that by coming up with some *really* awesome proposal, but you'll be fighting against the tide a bit. ChrisA -- https://mail.python.org/mailman/listinfo/python-list