В Scala, как остановить чтение строк из файла, как только критерий выполнен? - PullRequest
6 голосов
/ 31 августа 2010

Читая строки в цикле foreach, функция ищет значение по ключу в CSV-подобном структурированном текстовом файле.После того, как определенная строка найдена, бессмысленно продолжать читать строки, ища что-то там.Как остановиться, так как в Scala нет оператора break?

Ответы [ 3 ]

9 голосов
/ 31 августа 2010

Класс Скалы Source ленив. Вы можете читать символы или строки, используя takeWhile или dropWhile, и итерация по вводу не должна идти дальше, чем требуется.

6 голосов
/ 31 августа 2010

Чтобы расширить ответ Рэндалла. Например, если ключ находится в первом столбце:

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 голосов
/ 31 августа 2010

В предыдущих ответах предполагалось, что вы хотите прочитать строки из файла, я предполагаю, что вы хотите способ разорвать цикл for по требованию.Вот решение Вы можете сделать так:

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