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.



Reply via email to