Ну, в Scala вы можете сказать:
val lines = scala.io.Source.fromFile("file.txt").mkString
Но это просто библиотека сахара. См. Прочитать весь файл в Scala? для других возможностей. На самом деле вы спрашиваете, как применить функциональную парадигму к этой проблеме. Вот подсказка:
Source.fromFile("file.txt").getLines().foreach {println}
У тебя есть идея? Строка foreach
в файле выполняет функцию println
. Кстати, не волнуйтесь, getLines()
возвращает итератор, а не весь файл. Теперь что-то более серьезное:
lines filter {_.startsWith("ab")} map {_.toUpperCase} foreach {println}
Видишь идею? Возьмите lines
(это может быть массив, список, набор, итератор, все, что может быть отфильтровано и содержит элементы, имеющие метод startsWith
) и filter
, берущие только элементы, начинающиеся с "ab"
. Теперь возьмите каждый предмет и map
, применяя метод toUpperCase
. Наконец foreach
получившийся предмет print
ит.
Последняя мысль: вы не ограничены одним типом. Например, скажем, у вас есть файл, содержащий целое число, по одному в строке. Если вы хотите прочитать этот файл, проанализируйте число и суммируйте их, просто скажите:
lines.map(_.toInt).sum