我刚尝试了scala.io.{Source, BufferedSource}
的功能。但是在运行mkString
方法之后,scala.io.BufferedSource
实例是一个空的迭代器。我的代码如下所示:
val myFile = Try { Source.fromFile("myFile.tmp") }
println(myFile) // prints: "Success(non-empty iterator)"
val content: Option[String] = myFile match {
case Success(file) => Some(file.mkString)
case Failure(exception) => None
}
println(myFile) // prints: "Success(empty iterator)"
BufferedSource
实例是否受影响(清空)?在scala文档中没有提到:scala.io.BufferedSource
我是Scala-API的新手,所以也许我错过了理解的东西。
答案 0 :(得分:2)
BufferedSource
是Iterator
的子类。方法mkString
迭代当前实例并对其进行字符串表示。因此,在调用mkString
之后,您将收到空的迭代器。
答案 1 :(得分:2)
BufferedSource
类实现TraversableOnce特征,其文档并不是最有用的:“集合的模板特征,可以只遍历一次或一次或多次。 “但是在BufferedSource
的情况下,它看起来只是真正可以遍历一次。