dynamic classes and duck typing

grauzone none at example.net
Tue Dec 1 00:55:09 PST 2009


Andrei Alexandrescu wrote:
> 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.

But isn't it the same problem with overloaded functions?
Or is this specific issue already solved in D2? (A short look in the 
language specification revealed nothing; is the unary & operator even 
documented?)

> Andrei



More information about the Digitalmars-d mailing list