> The nesting is irrelevant to understanding the semantics
The nesting is absolutely relevant to producing the semantics.
The following uses deceptive whitespace to suggest a nesting that is contrary to the actual nesting, interfering with understanding:
if (foo)
if (bar)
xyzzy();
else
flop();
The ternary operator A ? B : C is the goofy invention of demented mind. In nested situations, it is mind-bendingly unreadable. It behooves us to style it in a way that reveals the abstract syntax tree structure.In C, I would in fact recommend:
#define if3(a, b, c) ((a) ? (c) : (c))
return if3(a < b, -1, if3(a > b, 1, 0));
Now we can have it in one line, yet it's clear.> The following uses deceptive whitespace to suggest a nesting that is contrary to the actual nesting, interfering with understanding
Fortunately, the ternary pattern doesn't exhibit this problem. So again, this objection doesn't fly.
The nesting is irrelevant to understanding the semantics, so this objection doesn't fly. The idiom is basically just a truth table with conditions on the left and the matching value on the right. You read it left-to-right, top-to-bottom, just like all other code. The first condition on the left that matches returns the value on right-hand side.