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