Заменить элементы в списке по условию - PullRequest
0 голосов
/ 23 июня 2018

У меня довольно большая val s: List[Int] = //..., функция f: Int => Boolean и функция transform: Int => Int.

Проблема : я хочу создать еще один List[Int], такой, чтобы все элементы e: Int из s: List[Int] были заменены на f(e) = true на transform(e).

Я посмотрел на cats-mtl FunctorEmpty (придерживаться стиля функционального программирования), но, похоже, в моем случае это не сработало. Может быть, некоторые cats / scalaz структуры данных могут быть полезны здесь? Или любым другим способом?

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

List(1, 2, 3).map(fn) создает новый список, который может быть не совсем вам нужен, особенно если ввод большой.

Альтернативным решением будет отображение в представлении List(1, 2, 3).view.map(...) без создания нового списка и только "материализация" результатов, когда они вам нужны

0 голосов
/ 23 июня 2018
s.map{ e => if(f(e)) transform(e) else e }
...