按条件替换列表中的元素

时间:2018-06-23 13:43:12

标签: scala list functional-programming scalaz scala-cats

我有一个相当大的val s: List[Int] = //...,一个函数f: Int => Boolean和一个函数transform: Int => Int

问题 :我想创建另一个List[Int],以使e: Int的所有元素s: List[Int]都{ 1}}替换为f(e) = true

我查看了cats-mtl FunctorEmpty(坚持使用函数式编程风格),但是在我看来,它似乎不起作用。也许某些transform(e) / cats数据结构在这里有用吗?还是其他方式?

2 个答案:

答案 0 :(得分:6)

[object Promise]

答案 1 :(得分:0)

List(1, 2, 3).map(fn)创建一个可能并不完全想要的新列表,尤其是在输入较大的情况下。

另一种解决方案是在视图List(1, 2, 3).view.map(...)上映射而不创建新列表,并且仅在需要时“物化”结果