how to access struct member using [] operator?

grampus via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Sep 25 08:29:24 PDT 2016


On Sunday, 25 September 2016 at 10:44:38 UTC, pineapple wrote:
> On Sunday, 25 September 2016 at 04:54:31 UTC, grampus wrote:
>> Dear all
>>
>> For example, I have a struct
>> struct point{int x;int y}
>> point a;
>>
>> Is there an easy way to access x and y by using a["x"] and 
>> a["y"]
>>
>> I guess I need to overload [], but can't figure out how.
>>
>> Someone can help? Thank you very much
>
> If they all share the same type, you can use a switch like 
> @Namespace suggested.
>
> If the "x" and "y" strings are available at compile-time, you 
> can use a mixin.
>
>     auto getattr(string attr)(point a){
>         mixin(`return a.` ~ attr ~ `;);
>     }
>
>     auto x = a.attr!"x";
>
> Otherwise, no. D types aren't dynamic in the same way that 
> Python's types are.

Thank you all for the clear reply.

Now I know how far I can go on this.



More information about the Digitalmars-d-learn mailing list