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".