Static foreach internal variable
drug
drug2004 at bk.ru
Thu Aug 30 09:49:15 UTC 2018
30.08.2018 11:19, Andrey пишет:
> Hello,
> is it possible to declare an internal variable in "static foreach" and
> on each iteration assign something to it?
> Example:
>> static foreach(arg; SomeAliasSeq)
>> {
>> internal = arg[0].converted; // a shortcut for expression
>> "arg[0].converted"
>>
>> static if(internal.length == 0) { ... }
>> else static if(internal.isNull) { ... }
>> else { ... }
>> }
static foreach will be lowered to:
```
{
auto internal = SomeAliasSeq[0][0].converted;
static if(internal.length == 0) { ... }
else static if(internal.isNull) { ... }
else { ... }
auto internal = SomeAliasSeq[1][0].converted;
static if(internal.length == 0) { ... }
else static if(internal.isNull) { ... }
else { ... }
...
auto internal = SomeAliasSeq[N][0].converted; // N ==
SomeAliasSeq.length
static if(internal.length == 0) { ... }
else static if(internal.isNull) { ... }
else { ... }
}
```
if you use scope it will be
```
{
{
auto internal = SomeAliasSeq[0][0].converted;
static if(internal.length == 0) { ... }
else static if(internal.isNull) { ... }
else { ... }
}
{
auto internal = SomeAliasSeq[1][0].converted;
static if(internal.length == 0) { ... }
else static if(internal.isNull) { ... }
else { ... }
}
...
{
auto internal = SomeAliasSeq[N][0].converted; // N ==
SomeAliasSeq.length
static if(internal.length == 0) { ... }
else static if(internal.isNull) { ... }
else { ... }
}
}
```
every instance of internal variable will be defined in its own scope
More information about the Digitalmars-d-learn
mailing list