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

Iva*_*van 6 csv file-io loops scala break

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

Ran*_*ulz 9

斯卡拉的Source课很懒.您可以使用takeWhile或读取字符或行,dropWhile并且输入上的迭代不需要继续进行.


huy*_*hjl 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()
Run Code Online (Sandbox Code Playgroud)


Jer*_*iho 2

以前的答案假设您想要从文件中读取行,我假设您想要一种根据需要中断 for 循环的方法。这是解决方案 您可以这样做:

breakable {
   for (...) {
     if (...) break
   }
 }
Run Code Online (Sandbox Code Playgroud)