On 2010-10-15 08:12:24 -0400, bearophile <bearophileh...@lycos.com> said:

Currently to call a method to a newly build object/struct you need:

(new Foo).bar();

But isn't it better to change the D operator precedence rules a bit and allow new to bind more closely than the method call, to allow a syntax like:

new Foo.bar();

Do you see bad side effects in this D2 change?

But then, how does that work?

        new Foo.SubType.bar();

Could work like this:

        new (Foo.Subtype).bar();

which doesn't look too bad as long as .bar() is at the end. Remove it and you'll get this:

        new (Foo.Subtype);

Hardly interesting, and somewhat counter-intuitive. That's especially bad considering that all types are in reality enclosed module name which can be made explicit:

        new (std.stdio.File);

I much prefer that this works:

        new std.stdio.File;
        new Foo.Subtype;

Even if it means I have to do:

        (new Foo).bar();

--
Michel Fortin
michel.for...@michelf.com
http://michelf.com/

Reply via email to