【发布时间】:2016-07-03 13:47:48
【问题描述】:
这个程序从 std io 读取一些数字(每个数字都在新的一行)。我只输入一次数字! 现在,值“it”应该在定义点进行评估(而不是惰性 val),并且“it”应该被 RHS 的结果替换。
所以,当第一个 println(it.size) 被称为“it”时,它已经被计算过了。那么为什么第二次调用 prinln 总是返回零呢?似乎它尝试从 std io 再次读取,并且由于没有读取任何内容,因此它返回零。
object Test {
def main(args: Array[String]) {
val it= io.Source.stdin.getLines().map(_.toInt)
println(it.size) // prints correct number of lines
println(it.size) // prints zero always????
}
}
【问题讨论】: