On 12/03/2015 04:23 PM, Jim Barnett wrote:

> The `import` statement inside the `for`-loop kind of smells to me.

In addition to what others have explained, local imports are necessary for template mixins:

  http://ddili.org/ders/d.en/mixin.html#ix_mixin.import,%20local

Quoting:

module a;

import std.string;    // ← wrong place

mixin template A(T) {
    string a() {
        T[] array;
        // ...
        return format("%(%s, %)", array);
    }
}

"if std.string is not imported at the actual mixin site, then the compiler would not be able to find the definition of format() at that point"

module a;

mixin template A(T) {
    string a() {
        import std.string;    // ← right place

        T[] array;
        // ...
        return format("%(%s, %)", array);
    }
}

Ali

Reply via email to