dynamic classes and duck typing

KennyTM~ kennytm at gmail.com
Sat Nov 28 07:14:52 PST 2009


On Nov 28, 09 22:00, bearophile wrote:
> Walter Bright:
>> and then s.foo(3), if foo is not a compile time member of s, is
>> rewritten as:
>>      s.opDynamic!("foo")(3);
>
> I don't understand, isn't this the right translation?
> s.opDynamic("foo", 3);
> If the "foo" name is known at compile time only (as in all C# examples and in Python) you can't use a template argument.
> (And then it becomes useful to have associative arrays that are fast when the number of keys is small,<  10).
>
> Bye,
> bearophile

Probably because you can write

Variant myOpReallyDynamic(string name, Variant[] s...) {
    ...
}

Variant opDynamic(string name)(Variant[] s...) {
   return myOpReallyDynamic(name, s);
}

but not the other way round.



More information about the Digitalmars-d mailing list