Closure capture loop variables

Vladimir Panteleev via Digitalmars-d digitalmars-d at puremagic.com
Thu Apr 30 05:55:16 PDT 2015


On Thursday, 30 April 2015 at 12:01:32 UTC, Marc Schütz wrote:
> On Thursday, 30 April 2015 at 05:23:55 UTC, Vladimir Panteleev 
> wrote:
>> On Thursday, 30 April 2015 at 03:58:44 UTC, Freddy wrote:
>>> On Thursday, 30 April 2015 at 01:19:45 UTC, Vladimir 
>>> Panteleev wrote:
>>>> Because "copy" is still modified every time "i" is.
>>> But shouldn't copy be redeclared every loop iteration (or the 
>>> compiler could pretend to redeclare it).
>>
>> No, it will have the same address every time.
>
> The current behaviour is wrong:
> https://issues.dlang.org/show_bug.cgi?id=2043
> https://issues.dlang.org/show_bug.cgi?id=8621

These are slightly different problems. I think Freddy's programs 
are working as designed.

D closures should work in the same way as, e.g., JS closures. Try 
rewriting the program in JavaScript. If it behaves in the same 
way, it's not a D bug.


More information about the Digitalmars-d mailing list