[D.typesystem] Suggestion for improving OO inheritance models

Andrej Mitrovic andrej.mitrovich at gmail.com
Wed Sep 1 14:39:47 PDT 2010


You mean like this?:
module add_virtual_functions;

import std.stdio : writeln;

void main()
{
    test();
}

mixin template Foo()
{
    void func()
    {
        writeln("Foo.func()");
    }
}

class Bar
{
    void func()
    {
        writeln("Bar.func()");
    }
}

class Code : Bar
{
    mixin Foo;
}

void test()
{
    Bar b = new Bar();
    b.func();   // calls Bar.func()

    Code c = new Code();
    c.func();   // calls Code.func()
}


On Wed, Sep 1, 2010 at 11:30 PM, Jacob Carlborg <doob at me.com> wrote:
> On 2010-09-01 22:44, Philippe Sigaud wrote:
>>
>> On Wed, Sep 1, 2010 at 18:13, retard <re at tard.com.invalid> wrote:
>>
>>
>>    Have you taken a loot at Scala & traits already? It would be a great
>>    starting point.
>>
>>
>> Scala's traits are great! Implicits in Scala are quite interesting too.
>> Also, Haskell typeclasses
>>
>> I wonder if D can have part of Scala traits functionality with mixins?
>
> You can't use D template mixins to add methods that will overload existing
> methods.
>
>
> --
> /Jacob Carlborg
>


More information about the Digitalmars-d mailing list