On 2012-04-01 08:18, Ali Çehreli wrote:
On 03/31/2012 09:09 PM, Artur Skawina wrote:

 >
 > enum s = cast(S*)null;
 > foreach (i, m; s.tupleof) {
 > enum name = S.tupleof[i].stringof[4..$];
 > alias typeof(m) type;
 > writef("(%s) %s\n", type.stringof, name);
 > }
 >
 > Real Programmers don't use std.traits. ;)
 >
 > artur

Your method works but needing to iterate on a struct variable by
s.tupleof and having to use the struct type as S.tupleof in the loop
body is strange.

Yeah, it's a bit strange. One could think that it would be possible to use "m.stringof" but that just returns the type. Instead of using "s.tupleof" it's possible to use "typeof(S.tupleof)".

Have a look at:

https://github.com/jacob-carlborg/orange/blob/master/orange/util/Reflection.d#L212

It's possible to get the type of a field as well, based on the name:

https://github.com/jacob-carlborg/orange/blob/master/orange/util/Reflection.d#L237

--
/Jacob Carlborg

Reply via email to