Iは、サイズ3Dlang byLineCopyスキップラインは
import std.stdio;
import std.range;
import std.array;
void main()
{
while (!stdin.eof) {
auto currentBlock = array(take(stdin.byLineCopy, 3));
foreach (i, e; currentBlock) {
writefln("%d) %s", i, e);
}
}
}
のグループにグループ化入力ラインに想定し、次の入力
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune
Pluto
それが出力を生成するが与えられ、次のDプログラムを有しています。
0) Mercury
1) Venus
2) Earth
0) Jupiter
1) Saturn
2) Uranus
0) Pluto
各繰り返しで境界線をスキップします(火星と海王星は出力にありません)。私は間違って何をしていますか? stdin.byLineCopy
がInputRange
ている間chunks
がForwardRange
を必要とする.array
が必要であること
void main()
{
foreach (i, chunk; stdin.byLineCopy.array.chunks(3).enumerate) {
writefln("%s", chunk);
}
}
注:あなたがインデックスを維持するためにstd.range.enumerate
と組み合わせて、std.range.chunks
をしたいよう
hmは私にとってtake関数のバグのようです。その間に他の関数を同じものにしたい場合は、3長さの範囲を返す '.chunks(3)'を使用してください。 – WebFreak001
@ WebFreak001 'chunkks'は私のために働いていません。 'byLineCopy'は' InputRange'を返し、 'chunks'は' ForwardRange'を返します。 –