About foreach loops
KennyTM~
kennytm at gmail.com
Wed Jun 15 07:44:18 PDT 2011
On Jun 15, 11 22:35, Caligo wrote:
> You can create a temporary if you like:
>
> foreach(i; 0..10){
> int ii = i + 1;
> writeln(ii, " ");
> }
>
> Which outputs:
> 1 2 3 4 5 6 7 8 9 10
>
>
> The problem with trying to "fix" foreach is that it would create
> problems of its own. The following code would not behave correctly:
>
> foreach(i; 0..10){
> if(i& 1)
> i += 1;
> writeln(i, " is even.");
> }
>
> not to mention all the code that's already using foreach.
If the code rely on the 'implicit ref' behavior of 'i', the code is
doing it wrong. The spec never mentioned what happened when the variable
is modified in a ForeachRangeStatement. I believe it is more sane if
modifying 'i' is disallowed unless 'ref' is used.
More information about the Digitalmars-d
mailing list