昨日、このコードは私に頭痛を引き起こしました。ファイルを行ごとに読み込んで修正しました。何か案は ?ループ中のこのコードでは奇妙な文字列
whileループは、ファイル内の行の何がこれは確かにトリッキーである1より大きい
val lines = Source.fromFile(new File("file.txt")).getLines;
println("total lines:"+lines.size);
var starti = 1;
while(starti < lines.size){
val nexti = Math.min(starti + 10, lines.size );
println("batch ("+starti+", "+nexti+") total:" + lines.size)
val linesSub = lines.slice(starti, nexti)
//do something with linesSub
starti = nexti
}
+1はScalaのwhileループで反復処理を行う方法を指摘しています。 –
なぜこれはバグだと思いますか?反復子は通常、それらが含む要素の数を知らない。特に、ファイル全体を読み取らずにファイル内の行数を調べることはできません。 – ziggystar
これはバグと呼ばれるものによって異なります。著者が意図したとおりに動作し、文書化されています。しかし、この命名は直感的ではありません。私は間違いなくイテレータを返すとは期待していませんでした。 getLinesはどのような方法でもイテレータを意味しません。私は間違いなくこの機能が好きです。 – smartnut007