Я полностью согласен с данным ответом, тем не менее, я должен указать на что-то важное, и первоначально я планировал добавить простой комментарий.
Но это было бы довольно долго, так что, оставьте меня в качестве варианта ответа.
Совершенно верно, что zip*
методы полезны для создания таблиц со списками, но у них есть аналог, который они зацикливают списки для его создания.
Таким образом, общая рекомендация состоит в том, чтобы упорядочить действия, требуемые в списках, в view
, чтобы объединить все из них, которые будут применены, только для получения результата. Получение результата рассматривается, когда возвращаемая сумма не равна Iterable
. Например, foreach
.
Теперь, говоря о первом ответе, если у вас есть lines
, чтобы быть списком строк в очень большом файле (или даже перечисляемом в нем), zipWithIndex
пройдет через все их и выдаст таблица (повторяемая из кортежей). Тогда для понимания снова вернется через то же количество предметов.
Наконец, вы повлияли на длину бега на n
, где n
- длина lines
и добавили объем памяти m + n*16
(приблизительно), где m
- lines
' след.
Предложение
lines.view.zipWithIndex map Function.tupled(CsvParser.parse) foreach println
Осталось несколько слов (обещаю), lines.view
создаст что-то вроде scala.collection.SeqView
, которое будет содержать всю дальнейшую функцию "отображения", создающую новые Iterable, как и zipWithIndex
и map
.
Более того, я думаю, что выражение более изящно, потому что оно следует за читателем и логично.
«Для строк создайте представление , которое будет застегивать каждый элемент с его index , результат будет mapped по результату парсера , который должен быть напечатан".
НТН.