Why don't lazy parameters bind to delegates? Was: Feature to get or add value to an associative array.
Giles Bathgate
giles.bathgate at gmail.com
Fri Apr 20 22:46:54 UTC 2018
On Friday, 20 April 2018 at 22:21:13 UTC, Jonathan M Davis wrote:
> Honestly, I think that it's a terrible idea to special-case it
> like that. If we want to argue for making it work in the
> language, that's fine, but if we special-case it like this,
> then it will work with some functions that have lazy parameters
> and not others, and the result will be confusing. Besides, all
> it takes to be able to pass a lamdba or delegate to a lazy
> parameter is to actually call it when passing it. So, if you
> add parens after the braces, it works. There's no need to go
> and add a special case for it to the function.
Again lack of experience, so I presume you can just do:
bool inserted = false;
auto p = aa.getOrAdd("key", {inserted = true; return new Person;
}());
I hadn't realised that until now. I enjoy your brutal honesty by
the way ;)
More information about the Digitalmars-d
mailing list