gpt4 book ai didi

Scala 'fromFile' 怪异?

转载 作者:行者123 更新时间:2023-12-04 02:15:58 25 4
gpt4 key购买 nike

我不明白为什么有两段代码要做完全相同的事情,却在 Scala 中做不同的事情。

第一个例子:

scala> val ggg = Source.fromFile("/somefile");
ggg: scala.io.BufferedSource = non-empty iterator

scala> ggg.getLines();
res67: Iterator[String] = empty iterator

第二个例子:
scala> Source.fromFile("/somefile").getLines();
res68: Iterator[String] = non-empty iterator

他们不是打算做同样的事情,还是我错过了什么?

最佳答案

这似乎是 BufferedSource.toString 的一个怪癖(错误?) .观察:

// no problem
scala> { val x = Source.fromFile("foo.txt"); x.getLines() }
res10: Iterator[String] = non-empty iterator

// ahh, calling toString somehow emptied our iterator
scala> { val x = Source.fromFile("foo.txt"); println(x.toString); x.getLines() }
non-empty iterator
res11: Iterator[String] = empty iterator

要显示表达式的值,REPL 需要调用 BufferedSource.toString ,这有清空迭代器的副作用。

关于Scala 'fromFile' 怪异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7018893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com