On Thursday, 23 July 2015 at 20:09:34 UTC, Walter Bright wrote:
On 7/23/2015 7:49 AM, ixid wrote:
If we had a clean sheet wouldn't it be better to have if
return a value and
ditch ternary?
Then we'd start seeing code like:
x = 45 + if (y == 10) { while (i--) z += call(i); z; } else
{ switch (x) { case 6: foo(); y; } + tan(z);
I.e. the embedding of arbitrary statements within expressions.
We already have some of this with embedded anonymous lambda
support, and I've discovered one needs to be very careful in
formatting it to not wind up with an awful unreadable mess.
So I'd be really reluctant to continue down that path.
As opposed to:
auto n = {
if (y == 10) {
return {
while (i--)
z += call(i);
return z;
}();
} else {
return {
switch (x) {
case 6: return foo();
default: return y;
}
}();
}
}() + tan(z);
You can already do that, it's even uglier.