On Saturday, 24 November 2018 at 08:50:59 UTC, Eko Wahyudin wrote:
On Saturday, 24 November 2018 at 08:09:38 UTC, Stanislav Blinov wrote:
On Saturday, 24 November 2018 at 03:48:12 UTC, Eko Wahyudin wrote:
Hi all,
anyone know how to iterate getSymbolsByUDA ?

enum Attr;
struct A
{
    @Attr int a;
    int b;

    @Attr void foo() {}
    @Attr void foo(int) {}
}

void main() {
    import std.traits;
    import std.stdio;

    alias symbols = getSymbolsByUDA!(A, Attr);

    A a;

    static foreach (i; 0 .. symbols.length) {
writeln("identifier: ", __traits(identifier, symbols[i]));
        static if (is(typeof(symbols[i]) == int)) {
__traits(getMember, a, __traits(identifier, symbols[i])) = 42;
        }
    }

    assert(a.a == 42);
}

aah ya,, this statement is work

static foreach (i; 0 .. symbols.length)

thank you.

It should work with just:

static foreach(sym; getSymbolsByUDA!(A, Attr)){
  ...
}

or

alias symbols = getSymbolsByUDA!(A, Attr);

static foreach(sym; symbols){
  ...
}


---

What you were missing was just making it a static foreach.

Reply via email to