Hi all,
I have:

```
import std.stdio;

void main() {
   Logger[] log;
   Logger l0 = Logger(0,1);
   Logger l1 = Logger(100,1);
   Logger l2 = Logger(200,1);
   log ~= l0;
   log ~= l1;

   foreach (i; 0 .. 3) {
      writeln("it:", i);
      foreach (l; log) {
         l.run;
      }
   }
}

struct Logger {
   int initial;
   int increment;
   void run() {
      initial += increment;
      writeln("\t", initial);
   }
}
```
Output:
```
it:0
        1
        101
it:1
        1
        101
it:2
        1
        101
```
If I use:
```
void main() {
   Logger[] log;
   Logger l0 = Logger(0,1);
   Logger l1 = Logger(100,1);
   Logger l2 = Logger(200,1);
   log ~= l0;
   log ~= l1;
   foreach (i; 0 .. 3) {
      writeln("it:", i);
      l0.run();
      l1.run();
   }
}
```
output (correct) is:
```
it:0
        1
        101
it:1
        2
        102
it:2
        3
        103
```
can someone help me to understand? Thanks!


Reply via email to