6

读取 foreach 循环中的行,函数在类似 CSV 的结构化文本文件中通过键查找值。找到特定行后,继续阅读行寻找那里的东西是没有意义的。由于 Scala 中没有 break 语句,如何停止?

4

3 回答 3

9

Scala 的Source课程很懒惰。takeWhile您可以使用or读取字符或行,dropWhile并且对输入的迭代不需要超出所需的范围。

于 2010-08-31T04:31:44.290 回答
6

扩展兰德尔的答案。例如,如果键在第一列:

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()
于 2010-08-31T06:46:32.783 回答
2

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

breakable {
   for (...) {
     if (...) break
   }
 }
于 2010-08-31T09:38:19.203 回答