On Friday, 5 October 2012 at 07:26:43 UTC, Tove wrote:
Don't forget the with statement, it's not "just" for switches! In many cases it's actually even better than the proposed changes _and_ it works today!

import std.stdio;

struct d_is_beautiful
{
  int a=1;
  int b=2;
}

void main()
{
  with(d_is_beautiful()) if(a==1)
    writeln("ok");
  else
    writeln("ko:", a);

  with(d_is_beautiful()) do
  {
    ++a;
    writeln("iter");
  }
  while(a!=b);
}

This was news to me. It seems you can also use a tuple for that. That's a pretty decent workaround:

import std.typecons;
//...

with (Tuple!(int, "a")(getInt()))
if (a > 9)
{
    //...
}
else with (Tuple!(char, "b")(getChar()))
if (b == 'D')
{
    //...
}


On Friday, 5 October 2012 at 07:28:29 UTC, Timon Gehr wrote:
But if there are else-if clauses, then you end up polluting your namespace, and notice how the syntax of your workaround deteriorates exponentially:
...

Check your math.

Correction: "the syntax deteriorates only linearly".

Reply via email to