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中写这个有惯用的方法吗?什么东西不涉及创造不必要的额外变量?
看看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)