Reply to Miles,
bearophile wrote:
My little proposal for D is to turn the following into a syntax
error, to avoid possile programmer mistakes (so the programmer must
put parentheses here to make it compile):
x ? y : a ? b : c
The ternary operator is not ambiguous,
I think not.
x ? y : a ? b : c => (x ? y : a) ? b : c
or
x ? y : a ? b : c => x ? y : (a ? b : c)
without checking the actual syntax you can't tell which of the above will
be used and (according to bearophile) if ?: followed after +/-/etc the first
would be.
I see no need for making it an
error. I have used such constructs very often, with no problem:
However I agree. Don't change it.
writefln("Printer is %s.",
status == OFFLINE ? "offline" :
status == ONLINE ? "online" :
status == CHECK ? "out of paper" :
status == ONLINE_CHECK ? "on fire" :
ha ha ha :)
"unknown status");
That would become a real mess of parenthesis.