On Monday, 22 July 2013 at 15:04:25 UTC, monarch_dodra wrote:
On Monday, 22 July 2013 at 12:51:31 UTC, Andrej Mitrovic wrote:
On 7/22/13, JS <js.m...@gmail.com> wrote:
foreach doesn't allow you to modify the index to skip over
elements.
It does:
-----
import std.stdio;
void main()
{
int[] x = [1, 2, 3, 4, 5];
foreach (ref i; 0 .. 5)
{
writeln(x[i]);
++i;
}
}
-----
Writes:
1
3
5
99% sure that's unspecified behavior. I wouldn't rely on
anything like that.
Of course it is specified behavior.
ForeachStatement:
Foreach (ForeachTypeList ; Aggregate) NoScopeNonEmptyStatement
Foreach:
foreach
foreach_reverse
ForeachTypeList:
ForeachType
ForeachType , ForeachTypeList
ForeachType:
refopt BasicType Declarator
refopt Identifier
Aggregate:
Expression
This is an example of unspecified behavior:
import std.stdio;
void main()
{
int[] x = [1, 2, 3, 4, 5];
foreach (ref i; 0 .. 5)
{
__limit1631--;
writeln(x[i]);
}
}