davidl, el 17 de abril a las 14:31 me escribiste: > 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?
This is awsome indeed. I'd love to see it in the specs. The suggestion of making opDotExp a template it's good one too. I guess that now that opDot is replaced by alias this, opDot can be used for this instead of opDotExp. I don't fully understand the example though. In writefln((v.qq = 5).i), how is that B.i is assigned to 5 if the opDotExp("qq", 5) don't propagate the 5 to the new B()? Thanks for the great job. -- Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/ ---------------------------------------------------------------------------- GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145 104C 949E BFB6 5F5A 8D05) ---------------------------------------------------------------------------- Que barbaridad, este país se va cada ves más pa' tras, más pa' tras... -- Sidharta Kiwi