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