3

复制http://forum.dlang.org/thread/arlokcqodltcazdqqlby@forum.dlang.org来比较回答速度:)

我基本上希望能够做这样的事情:

auto result = map!( (a, b) => a+b )( lockstep(range1, range2) );

是否有任何标准的简短方法可以使用 opApply (即 Lockstep )将输入范围包装在 struct 周围?

另外,如何将 Lockstep 重新设计为适当的范围?我可以提出拉取请求,但不确定当前的意图。

4

1 回答 1

1

D.learn 和 Simen Kjaeraas获得了奖品:


改用 std.range.zip :

auto result = map!( (a, b) => a+b )( zip(range1, range2) );

有两种方法的原因是锁步更适用于 foreach:

foreach (a, b; lockstep(A, B) ) {
    // Use a and b here.
}

与 zip 对比:

foreach (a; zip(A, B) ) {
  // Use a[0] and a[1] here.
}

已经有人建议在语言中更好地集成元组,因此将来 zip 可能具有锁步的所有优点(反之亦然),但不要交叉手指。

于 2012-12-29T18:12:56.690 回答