是否有一种惯用的D方法来生成一个包含从1到n的整数的数组?

Joh*_*tte 6 d

DI中常常想要做类似的事情:

uint n;
foreach(uint i; parallel(1..n)){
    somefunc(i);
}
Run Code Online (Sandbox Code Playgroud)

也就是说,我希望并行调用一个函数(somefunc),使用整数1到n作为参数.

但是,dmd在这里似乎不喜欢1..n,所以我最终做了一些愚蠢的事情:

uint n;
int[] nums = new int[n];
foreach(ulong index, int value; parallel(nums)){
    sumfunc(index);
}
Run Code Online (Sandbox Code Playgroud)

在D中写这个有惯用的方法吗?什么东西不涉及创造不必要的额外变量?

eco*_*eco 8

看看std.range.iota.它比数组更好,因为它没有分配.

void main()
{
    import std.parallelism, std.range;
    foreach(i; parallel(iota(1, 100))){
        somefunc(i);
    }
}

void somefunc(uint i)
{
    import std.stdio;
    writeln(i);
}
Run Code Online (Sandbox Code Playgroud)