cleaned
- итератор.
scala> val cleaned = lines.filter(_!="")
cleaned: Iterator[String] = non-empty iterator
Сразу после присвоения он не пуст.Итераторы в scala используются одноразово - после того, как вы пройдете его (например, применив метод length
), он станет пустым:
scala> cleaned.length
res0: Int = 13
scala> cleaned.length
res1: Int = 0
Это поведение можно исправить, преобразовав его в List или в Seq (lazy).:
scala> val lines=Source.fromFile("bla.txt").getLines
lines: Iterator[String] = non-empty iterator
scala> val cleaned = lines.filter(_!="").toSeq
cleaned: Seq[String] = Stream(first, ?)
scala> cleaned.length
res4: Int = 13
scala> cleaned.length
res5: Int = 13