在Scala中,如何在标准完成后立即停止从文件中读取行?

时间:2010-08-31 04:04:21

标签: scala file-io loops csv break

在foreach循环中读取行,函数通过类似CSV的结构化文本文件中的键查找值。在找到特定的行之后,继续阅读寻找某些内容的行是毫无意义的。如何在Scala中没有break语句停止?

3 个答案:

答案 0 :(得分:9)

Scala的Source课程很懒惰。您可以使用takeWhiledropWhile读取字符或行,并且输入的迭代不需要继续进行。

答案 1 :(得分:6)

扩展Randall的答案。例如,如果密钥位于第一列:

val src = Source.fromFile("/etc/passwd")
val iter = src.getLines().map(_.split(":"))
// print the uid for Guest
iter.find(_(0) == "Guest") foreach (a => println(a(2)))
// the rest of iter is not processed
src.close()

答案 2 :(得分:2)

以前的答案假设你想从文件中读取行,我假设你想要一种按需求打破循环的方法。 这是solution 你可以这样做:

breakable {
   for (...) {
     if (...) break
   }
 }