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