按条件替换List中的元素
Replace elements in List by condition
我有一个相当大的 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
数据结构在这里很有用?或者其他方式?
s.map{ e => if(f(e)) transform(e) else e }
List(1, 2, 3).map(fn)
创建一个新列表,该列表可能并不完全符合您的需要,尤其是在输入较大的情况下。
替代解决方案是在视图 List(1, 2, 3).view.map(...)
上映射而不创建新列表,并且只有 "materialize" 在您需要时得到结果
我有一个相当大的 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
数据结构在这里很有用?或者其他方式?
s.map{ e => if(f(e)) transform(e) else e }
List(1, 2, 3).map(fn)
创建一个新列表,该列表可能并不完全符合您的需要,尤其是在输入较大的情况下。
替代解决方案是在视图 List(1, 2, 3).view.map(...)
上映射而不创建新列表,并且只有 "materialize" 在您需要时得到结果