こんにちは、私は scala での奇妙な動作と思われるものを見ています。bufferedIterator で head を呼び出すと、内部関数で head がインクリメントされているようです。私の予想が間違っている場合、出力が正しいのはなぜですか。それとも、出力が間違っていますか?
与えられた:
import scala.io.Source
val source = Source.fromString("abcdef")
val buff1 = source.buffered;
println("outer head 1: " +buff1.head)
println("outer head 2: " +buff1.head)
def readLine():List[String] = {
def buffered = source.buffered
def readLine(tokens:List[String] , partialToken:String):List[String] = {
println("head1 " + buffered.head)
println("head2 " + buffered.head)
return Nil;
}
return (readLine(Nil, ""));
}
readLine();
私にとってこれの期待される出力は
outer head 1: a
outer head 2: a
head1: a
head2: a
実際の出力は次のとおりです。
outer head 1: a
outer head 2: a
head1 b
head2 c