On Sunday, 20 March 2016 at 14:11:11 UTC, Nick Treleaven wrote:
On Saturday, 19 March 2016 at 23:16:40 UTC, Xinok wrote:

I took a quick look through Phobos but didn't see anything similar so I wrote this as a proof of concept and to elicit discussion. This also works should the function throw rather than return gracefully.

http://dpaste.dzfl.pl/23c665bdae9e

Nice! This is more flexible than Go's defer as you can have more than one stack of them.

I don't quite get this:

defer((int i) => writeln(i), i);

If it was defer(() => writeln(i)), would that do the same? (Dpaste won't seem to let me edit your example on my tablet).

No that's not the same, since the reference to i does not change when doing:
defer(() => writeln(i))

However with defer((int i) => writeln(i), i) you pass the value of i to the lambda expression which stores the value in a new reference.

The problem with the first one is the value will always be the last value of i.

Reply via email to