In Scala, how to stop reading lines from a file as soon as a criterion is accomplished?
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
}
}
精彩评论