On 2015-07-22 3:35 PM, John Colvin wrote:
On Wednesday, 22 July 2015 at 21:36:58 UTC, jmh530 wrote:
On Wednesday, 22 July 2015 at 20:43:04 UTC, simendsjo wrote:
When "everything" is an expressions, you can write things like
    auto a = if(e) c else d;

In D you have to write
    type a = invalid_value;
    if(e) a = c;
    else  a = d;
    assert(a != invalid_value);



I prefer this example from one of the various Rust tutorials

let foo = if x == 5 {
                "five"
          }
          else if x == 6 {
                "six"
          }
          else {
                "neither"
          }

You're basically using a conditional expression as an rvalue. You can
do the same thing with a { } block.

Admittedly nowhere near as clean, but if you can bear to see the
"return"s, function literals can turn any bunch of code in to an
expression:

auto foo = { if(x == 5)
                          return "five";
                      else if(x == 6)
                          return "six";
                      else
                          return "neither";
                    }();

or of course there's the perhaps overly terse (brackets optional, i like
them to visually group the condition with the ? ):

auto foo = (x == 5)? "five"
                    : (x == 6)? "six"
                    : "neither";


Shouldn't that be its own function anyway? If you needed it in one place, you'll probably need it elsewhere. And, in this case, it can even be marked as pure.

Reply via email to