C# 4.0 dynamic vs std.variant

Lutger lutger.blijdestijn at gmail.com
Wed Jun 30 00:13:43 PDT 2010


Adam Ruppe wrote:

> If you want to play with dmdscript, I have a port to D2 here:
> http://arsdnet.net/dcode/dmdscript_d2.zip

Super! thanks.
 
> You have to compile it all at once: dmd *.d, instead of incremental,
> or it won't link for some reason.
> 
> There's some hacks in that code, since I did the port using a dmd
> release that had a broken in operator, and I haven't had the time to
> go back and fix it since then. But, it should still work anyway.
> 
> 
> The pretty.d file shows the beginnings of an opDispatch wrapper for
> script objects. The biggest problem I had in making it work was
> returning an object:
> 
> dynamic a;
> 
> a.b(); // works thanks to opDispatch calling through a lookup table
> a.b.c(); // doesn't work, it complains about wrong number of args to
> opDispatch, even if b is a property returning another dynamic
> 
> I don't know if this works in the new dmds. I haven't tried for a couple
> months.

I think this was fixed.
 
> 
> I'm pretty sure D will be able to do most of what C#4 does with bug
> fixes; no new features should really be necessary. One thing it can't
> do is:
> 
> dynamic a = "hello"; // this might not compile due to opCall, but
> break it into two lines and you can make it work
> 
> string b = a; // never gonna compile, arbitrary implicit casts aren't allowed
> 
> string b = a.coerce!string; // this is what std.variant does, works for me.



More information about the Digitalmars-d mailing list