Article: Writing Julia style multiple dispatch code in D

Rainer Schuetze via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Wed Aug 30 23:26:02 PDT 2017



On 31.08.2017 01:34, Jean-Louis Leroy wrote:
> On Wednesday, 30 August 2017 at 22:30:12 UTC, data pulverizer wrote:
>> On Wednesday, 30 August 2017 at 22:10:38 UTC, Jean-Louis Leroy wrote:
>>> On Wednesday, 30 August 2017 at 21:30:29 UTC, data pulverizer wrote:
>>>> In the light of this I think your package just became more 
>>>> interesting to me.
>>>
>>> I think that your work and mine are complementary :-)
>>
>> Here is one strange difference between inheriting from an interface 
>> and a class:
>>
>> ```
>> interface Animal{}
>> class Dog: Animal{}
>> class Cat: Animal{}
>>
>>
>> void main()
>> {
>>     Animal[] x;
>>     x ~= new Cat();
>>     x ~= new Dog();
>>     x ~= new Cat();
>>     writeln(typeid(x[0])); // Gives Animal
>> }
>> ```
>>
>> But if Animal is set to a class the typeid gives Cat, why does this 
>> happen? Does this mean that inheriting from an interface is not really 
>> polymorphism?
> 
> I noticed that too. Still scratching my head.

typeid(Interface) has been subject to a number of bugzilla reports, e.g. 
https://issues.dlang.org/show_bug.cgi?id=13833 and 
https://issues.dlang.org/show_bug.cgi?id=14612.


More information about the Digitalmars-d-announce mailing list