在foreach循环中读取行,函数通过类似CSV的结构化文本文件中的键查找值。在找到特定的行之后,继续阅读寻找某些内容的行是毫无意义的。如何在Scala中没有break语句停止?
答案 0 :(得分:9)
Scala的Source
课程很懒惰。您可以使用takeWhile
或dropWhile
读取字符或行,并且输入的迭代不需要继续进行。
答案 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
}
}