On 2010-07-25 09:48:21 -0400, bearophile <bearophileh...@lycos.com> said:

Michel Fortin:
Is this really an improvement over using a delegate literal?

        auto c = {
                auto a = retrieve_a();
                auto b = retrieve_b();
                return sqrt(a*a + b*b);
        };

Cute :-) I have never seen this used in D code. I think you will need to add () at the end when @property get implemented fully.

Indeed, I forgot to add the (). Without it the type of 'c' is a delegate (whether @property is implemented or not is irrelevant). I just didn't test it properly before posting. Here's the revised version:

        auto c = {
                auto a = 1.0;
                auto b = 2.0;
                return a*a + b*b;
        }();

I've never seen this in use either, but it looks like a nice pattern for variables that require a complex initialization.


I hope the D compiler is able to inline that delegate.

I think it does not currently. This bug report turns out to have a patch for this exact issue however:
<http://d.puremagic.com/issues/show_bug.cgi?id=4440>

Put your vote on it if you want.

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

Reply via email to