digitalmars.D - Iteration over structure fields and properties
- Void-995 (12/12) Sep 06 2017 I really appreciate traits and what they are introducing into the
- Jacob Carlborg (4/17) Sep 07 2017 You can use .tupleof and __traits(identifier) for this.
- Void-995 (6/22) Sep 07 2017 Would it work with:
- Jacob Carlborg (8/12) Sep 08 2017 No, for that you need the traits getFunctionAttributes [1] (I think all
I really appreciate traits and what they are introducing into the process. I'm curious how I can iterate over all fields of the structure (s.tupleof pretty much works for that) and properties while ignoring methods and sub data types that defined inside of structure (they defined only as type, not the field but of course they got into __traits(allMembers, S)). The idea is to use foreach to easily print into console something like: fieldNameA: fieldValueA fieldNameB: fieldValueB ... propertyNameA: propertyValueA ...
Sep 06 2017
On 2017-09-06 09:36, Void-995 wrote:I really appreciate traits and what they are introducing into the process. I'm curious how I can iterate over all fields of the structure (s.tupleof pretty much works for that) and properties while ignoring methods and sub data types that defined inside of structure (they defined only as type, not the field but of course they got into __traits(allMembers, S)). The idea is to use foreach to easily print into console something like: fieldNameA: fieldValueA fieldNameB: fieldValueB ... propertyNameA: propertyValueA ...You can use .tupleof and __traits(identifier) for this. -- /Jacob Carlborg
Sep 07 2017
On Thursday, 7 September 2017 at 07:09:29 UTC, Jacob Carlborg wrote:On 2017-09-06 09:36, Void-995 wrote:Would it work with: property int propertyNameA() And how to get key names then? As I remember tupleof return tuple of fields only, at least what I got how it works.I really appreciate traits and what they are introducing into the process. I'm curious how I can iterate over all fields of the structure (s.tupleof pretty much works for that) and properties while ignoring methods and sub data types that defined inside of structure (they defined only as type, not the field but of course they got into __traits(allMembers, S)). The idea is to use foreach to easily print into console something like: fieldNameA: fieldValueA fieldNameB: fieldValueB ... propertyNameA: propertyValueA ...You can use .tupleof and __traits(identifier) for this.
Sep 07 2017
On 2017-09-07 09:22, Void-995 wrote:Would it work with: property int propertyNameA()No, for that you need the traits getFunctionAttributes [1] (I think all functions are returned) and getFunctionAttributes [2].And how to get key names then? As I remember tupleof return tuple of fields only, at least what I got how it works.You index the tuple and use the "identifier" trait. [1] https://dlang.org/spec/traits.html#getVirtualFunctions [2] https://dlang.org/spec/traits.html#getFunctionAttributes -- /Jacob Carlborg
Sep 08 2017