Заменить элементы в списке по условию

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

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

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

scala,list,functional-programming,scalaz,scala-cats,

0

Ответов: 2


6 ов принято
s.map{ e => if(f(e)) transform(e) else e }

0

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

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

Скала, список, функционально-программирование, scalaz, Scala-кошка,
Похожие вопросы
Яндекс.Метрика