I just saw this block of code on the Wikipedia article on conditional operators:
Vehicle new_vehicle = arg == 'B' ? bus :
arg == 'A' ? airplane :
arg == 'T' ? train :
arg == 'C' ? car :
arg == 'H' ? horse :
feet;
I've changed the code a little, but the idea is the same. Would you find this use of the conditional operator acceptable? It's much more concise than the if
-else
construct, and using a switch would definitely open up a whole new set of opportunities for bugs (fall-throughs anyone?). Also, if
-else
s and switch
can't be used as R-values, so you'd have to create the variable first, initialize it and then assign as necessary.
I for one really like this, but I'm wondering what others think.
But the formatting is essential.
EDIT: I still like this. But I understand those who say "the switch
statement was made for this". OK, maybe so. But what if the conditions are function calls that return bool
? Or a million other things you can't switch on.
Are you switch lovers really trying to convince me that a huge if
-else
chain is better? Yes, programmers who don't know how to use the conditional operator will not understand this. They should learn how to use it. It's not arcane.