On 07/22/2013 08:04 AM, 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.

Two more solutions one with foreach one without any explicit looping:

import std.stdio;
import std.range;

void main()
{
    int[] x = [1, 2, 3, 4, 5];

    foreach (i; iota(0, 5, 2))
    {
        writeln(x[i]);
        ++i;
    }

    writeln(x.indexed(iota(0, x.length, 2)));
}

Ali

Reply via email to