开发者

In Scala, how to stop reading lines from a file as soon as a criterion is accomplished?

开发者 https://www.devze.com 2023-01-14 08:38 出处:网络
Reading lines in a foreach loop, a function looks for a value by a key in a CSV-like structured text file. After a specific line is found, it is senseless to continue reading lines looking for somethi

Reading lines in a foreach loop, a function looks for a value by a key in a CSV-like structured text file. After a specific line is found, it is senseless to continue reading lines looking for something there. How to sto开发者_开发问答p as there is no break statement in Scala?


Scala's Source class is lazy. You can read chars or lines using takeWhile or dropWhile and the iteration over the input need not proceed farther than required.


To expand on Randall's answer. For instance if the key is in the first column:

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()


Previous answers assumed that you want to read lines from a file, I assume that you want a way to break for-loop by demand. Here is solution You can do like this:

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

精彩评论

暂无评论...
验证码 换一张
取 消