On Wednesday, 30 October 2013 at 09:56:08 UTC, David Nadlinger
wrote:
One other place where this tends to crop is for code involving
loop variables, but while the behavior might be unexpected to
some, discussion has made clear that the code works as intended:
---
void main() {
import std.stdio;
void delegate()[] dgs;
foreach (i; 0 .. 5) dgs ~= { writeln(i); };
foreach (dg; dgs) dg();
}
---
If structs behaved like you want them to, the snippet would
(have to) print 0, 1, 2, 3, 4 as well, and tht's definitely too
big a language change to consider at this stage.
David
So D managed to mess up closures, too. And that's after years of
countless complaints about the same issue in JS!