Three Unlikely Successful Features of D

F i L witte2008 at gmail.com
Tue Mar 20 15:06:24 PDT 2012


Andrei Alexandrescu wrote:
> What are your faves?

opDispatch was expectantly successful for me. I haven't seen it
often used in examples or others peoples code, but it allows for
some really awesome stuff.

For instance, who says D doesn't have multiple inheritance?

struct A { void a() { writeln("a"); } }
struct B { void b() { writeln("b"); } }
struct C {
        private A _a;
        private B _b;
        void opDispatch(string s)() {
          static if (__traits(hasMember, A, s))
mixin("_a."~s~"();");
            else if (__traits(hasMember, B, s))
mixin("_b."~s~"();");
            else static assert("Method not found.");
        }
}

void main() {
        auto c = C();
        c.a();
        c.b();
}

and similarly, "alias x this" is useful for pseudo hierarchy. The
only down-side to doing this is that Mono-D doesn't currently
parse the syntax.



More information about the Digitalmars-d mailing list