passing duck-typed objects and retaining full type information

Adam Taylor via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Nov 11 17:50:07 PST 2014


> No, i'm specifically looking for a solution that is NOT 
> inheritance based.  I've been looking at solutions based on 
> opDispatch or template mixins -- but so far haven't come up 
> with anything.

For example in this thread:
http://forum.dlang.org/thread/mailman.410.1319536838.24802.digitalmars-d@puremagic.com?page=2

Adam Ruppe has an interesting example:

DynamicObject delegate(DynamicObject[] args) dynamicFunctions;

DynamicObject opDispatch(string name, T...)(T t) {
      if(name !in dynamicFunctions) throw new 
MethodNotFoundException(name);
      DynamicObject[] args;
      foreach(arg; t)
           args ~= new DynamicObject(arg);

      return dynamicFunctions[name](args);
}


More information about the Digitalmars-d-learn mailing list