On Thursday, 23 September 2021 at 00:17:49 UTC, jfondren wrote:
On Thursday, 23 September 2021 at 00:06:42 UTC, Ruby The
Roobster wrote:
So, I have the following function:
```d
writeln(tempcolor); //For this matter, the program
correctly reports tempcolor as 1...
for(ubyte j = 0;j < tempcolor; j++ /*trying ++j has same
effect*/ ) { //tempcolor is 1, yet this sloop gets executed
twice...
writeln();
posfunc(ftext, main, exp, temp, i, j, points , x);
//Orignally foreach loop, but
switching to for loop has same effect...
}
```
Needs more print in your print debugging:
```d
writeln("tempcolor: ", tempcolor);
...
writeln("in tempcolor with j: ", j);
```
output:
```
tempcolor: 1
in tempcolor with j: 0
...
... numbers
...
tempcolor: 0
tempcolor: 0
tempcolor: 0
tempcolor: 0
tempcolor: 0
tempcolor: 0
tempcolor: 0
tempcolor: 0
tempcolor: 0
tempcolor: 1
in tempcolor with j: 0
```
I figured out something weird. The variable 'i' is passed by
reference, yet the variable 'i' of the loop isn't being
incremented by posfunc. I assume foreach creates a new i
variable at the start of each new loop. Swapping the original
loop with a while loop fixes the problem. Thank you very much
for trying to help.