On Thursday, 30 January 2014 at 15:28:34 UTC, Timon Gehr wrote:
On 01/30/2014 03:08 PM, Ilya Yaroshenko wrote:
2) `foreach` creates it's own scope. This won't work:
foreach(i; TypeTuple!(1,2,3)){
mixin("int num"~i.stringof~";");
}
num1=1;
num2=2;
num3=3;
writeln(num1,num2,num3);
...
2) no. This should work for compile time foreach and
TypeTuples. There
are many examples in source code of Phobos.
The following code fails to compile:
import std.typetuple, std.stdio;
void main(){
foreach(i; TypeTuple!(1,2,3)){
mixin("int num"~i.stringof~";");
}
num1=1;
num2=2;
num3=3;
writeln(num1,num2,num3);
}
I am wrong, foreach always has own scope
foreach(S; TypeTuple!(string, wstring, dstring))
{
import std.conv : to;
S a = " a bcd ef gh ";
assert(equal(splitter(a), [to!S("a"), to!S("bcd"),
to!S("ef"), to!S("gh")]));
a = "";
assert(splitter(a).empty);
}
You can use mixin and format instead:
import std.typetuple, std.stdio;
void main(){
mixin(format("%(int num%s; %);", [1,2,3])); //<----
num1=1;
num2=2;
num3=3;
writeln(num1,num2,num3);
}