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

Reply via email to