Delegates and values captured inside loops
Anonymouse
zorael at gmail.com
Sat Jan 20 15:59:59 UTC 2024
I remember reading this was an issue and now I ran into it myself.
```d
import std.stdio;
void main()
{
auto names = [ "foo", "bar", "baz" ];
void delegate()[] dgs;
foreach (name; names)
{
dgs ~= () => writeln(name);
}
foreach (dg; dgs)
{
dg();
}
}
```
Expected output: `foo`, `bar`, `baz`
Actual output: `baz`, `baz`, `baz`
If I make `names` an `AliasSeq` it works, but I need it to be a
runtime array.
Is there a workaround?
More information about the Digitalmars-d-learn
mailing list