Fully dynamic d by opDotExp overloading

davidl davidl at nospam.org
Thu Apr 16 23:31:02 PDT 2009


After tweaking dmd a bit litte, i get the dotexp overloading work.

The following is the test code:
import std.stdio;
class c
{

     B opDotExp(char[] methodname,...)
     {
     	writefln("god it works ", methodname);
       return new B();
     }
     void opAdd(int j)
     {

     }
     void test()
     {
     }
}

class a:c
{

}

class B
{
   int i;
   B opAssign(int k){
     i=k;
     return this;
   }
}

char[] v1;

void func(char[] v, ...){}

void main()
{
    a v=new a;
    v.test();
    v.dynamicmethod(3,4);
    //v.qq = 5;
    writefln((v.qq = 5).i);
}

it generates the output:
god it works dynamicmethod
god it works qq
5

Any comments? Do you like this feature?

-- 
使用 Opera 革命性的电子邮件客户程序: http://www.opera.com/mail/



More information about the Digitalmars-d mailing list