How to iterate getSymbolsByUDA
Steven Schveighoffer
schveiguy at gmail.com
Wed Nov 28 15:38:30 UTC 2018
On 11/28/18 2:18 AM, Eko Wahyudin wrote:
> static foreach(sym; getSymbolsByUDA!(A, Attr)){
> writeln(sym.stringof); // print variable name "a" this what i want
> }
>
> foreach(sym; getSymbolsByUDA!(A, Attr)){
> writeln(sym.stringof); // print "sym"
> }
>
> foreach(sym; getSymbolsByUDA!(A, Attr)){
> writeln(__traits(identifier, sym)); //also print "sym"
> }
>
> is there a way to get variable name using foreach like static foreach?
Generally, foreach establishes a variable for the item, whereas static
foreach does not.
Note: I can't even get this to work, even in old versions of dmd. I get
the Error: need `this` for `a` of type `int`
But if you can get it to work, you may have luck with:
alias symbols = getSymbolsByUDA!(A, Attr);
foreach(i, _; symbols)
{
writeln(symbols[i].stringof);
// or
writeln(__traits(identifier, symbols[i]));
}
Which is an old workaround for how foreach on tuples used to work.
-Steve
More information about the Digitalmars-d-learn
mailing list