3

http://forum.dlang.org/thread/arlokcqodltcazdqqlby@forum.dlang.orgを複製して、回答速度を比較します:)

私は基本的に次のようなことができるようになりたいです:

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

opApply(ロックステップ)を使用して構造体の周りに入力範囲をラップする標準の短い方法はありますか?

また、ロックステップを適切な範囲として再設計するのはどうですか?プルリクエストはできましたが、現在の意図がわかりません。

4

1 に答える 1

1

賞品はD.learn と Simen Kjaeraasに贈られます。


代わりに std.range.zip を使用します。

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

2 つの方法がある理由は、lockstep が 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 に答える