Thread overview | ||||||
---|---|---|---|---|---|---|
|
September 06, 2017 Iteration over structure fields and properties | ||||
---|---|---|---|---|
| ||||
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 ... |
September 07, 2017 Re: Iteration over structure fields and properties | ||||
---|---|---|---|---|
| ||||
Posted in reply to Void-995 | 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 |
September 07, 2017 Re: Iteration over structure fields and properties | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jacob Carlborg | On Thursday, 7 September 2017 at 07:09:29 UTC, Jacob Carlborg wrote:
> 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.
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.
|
September 08, 2017 Re: Iteration over structure fields and properties | ||||
---|---|---|---|---|
| ||||
Posted in reply to Void-995 | 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 |
Copyright © 1999-2021 by the D Language Foundation