dynamic classes and duck typing

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Mon Nov 30 21:36:02 PST 2009


Bill Baxter wrote:
> On Mon, Nov 30, 2009 at 7:12 PM, Walter Bright
> <newshound1 at digitalmars.com> wrote:
>> Bill Baxter wrote:
>>> So we can overload on @property-ness?
>> No.
>>
>>> I.e. this works
>>>
>>> struct S
>>> {
>>> @property
>>> float x() { return 1.0f; }
>>> float x() { return 2.0f; }
>>> }
>>>
>>> void main()
>>> {
>>>    S  s;
>>>    writefln("%s", s.x); // writes 1.0
>>>    writefln("%s", s.x()); // writes 2.0
>>> }
>> That just looks wrong.
>>
> 
> Ok, so you can't have both dynamic properties and dynamic methods with
> this.  One or the other, your pick.
> Seems like an unfortunate limitation.
> 
> --bb

It's a limitation similar to not having a field and a method share the 
same name. It avoids a number of awkward questions such as figuring the 
meaning of &s.x.

Andrei



More information about the Digitalmars-d mailing list