3 ms·
I don't like the ternary operator ?, because it's not obvious: xyz = foo ? bar : baz; What does it mean? Which is the condition? which is the true, which is t
by skocznymroczny 9y ago
I don't like the ternary operator ?, because it's not obvious:
xyz = foo ? bar : baz;
What does it mean? Which is the condition? which is the true, which is the false value? It's not obvious.
In Python it is much more clearer:
xyz = bar if foo else baz
- bshimmin 9y agoI honestly struggle to understand how a traditional ternary like this isn't obvious. The bit before the question mark is the condition (er, like a question, which ends with a question mark), then the other two bits are for true and false in the order you would expect. I will freely admit I try and avoid nested ternaries, which I personally find hard to read.
- evincarofautumn 9y agoI never really understood the distaste for it, or how it’s non-obvious. It seems like the people I’ve talked to object to the punctuation-based syntax more than the semantics, because it exactly mirrors conditional statements, even when nested. (Well, except in PHP, but that’s a bug in the grammar.) if (a) { b } else if (c) { d } else { e } a ? b : c ? d : e if (a) { b } else { if (c) { d } else { e } } a ? b : ( c ? d : e ) The question mark goes after the thing you’re asking about, like in English. The colon to separate the true and false branches is totally arbitrary, I grant you. I’d prefer to have the if…else notation available as an expression, but the statement-expression distinction hasn’t quite died yet. Personally, I don’t care for Python’s version with the condition and true branch swapped, because I read it like invalid Forth, expecting “condition IF true-branch ELSE false-branch THEN”. :P