嗨,我看到了我认为 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