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/