On Monday, 9 December 2013 at 09:32:26 UTC, Dfr wrote:
What i trying to achieve in my current example is more succinct code.
A coming from Perl and instead of writing:

if(some_complex_statement.here > 0) {
    writefln("x is %s", some_long_expression.here);
}

I got used not to repeat complex statement, but use 'x' as quick alias:

if((int x = some_complex_statement.here) > 0) {
    writefln("x is %s", x);
}

Afaik, D has no StatementExpression, which means no declarations inside expressions. However, there is an AssignExpression, so assignment works, but requires the declaration before.

  int x;
  if((x = some_long_expression.here) > 0) {
    writefln("x is %s", x);
  }

The bad news is that this means type inference cannot be used here (no "auto") and the variables is declared in a wider scope than just the if-body.

Reply via email to