On Saturday, 4 June 2016 at 18:20:26 UTC, Alex wrote:
Hi all!
Could you help me clearify why a iota can't be accessed with
two arguments in a foreach loop?
following tests show my problem:
What does work:
int[] ku = [0, 1, 2, 3, 4];
foreach(i, el; ku)
writeln("index: ", i, " element: ", el);
What does not work:
counter = 5;
foreach(i, el; iota(counter))
writeln("index: ", i, " element: ", el);
Motivation: In real I want to have:
counter = 5;
foreach(i, el; randomCover(iota(counter)))
writeln("index: ", i, " element: ", el);
so, I could follow a random permutation. Maybe there is another
simple way to achieve this?
PS: needed imports:
import std.random : randomCover;
import std.range : iota;
import std.stdio : writeln;
Check out enumerate() in std.range;
int counter = 5;
foreach(i, el; enumerate(randomCover(iota(counter))))
writeln("index: ", i, " element: ", el);
index: 0 element: 3
index: 1 element: 1
index: 2 element: 0
index: 3 element: 2
index: 4 element: 4