替换"按条件列出"中的元素



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

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

我查看了cats-mtlFunctorEmpty(坚持函数式编程风格(,但它似乎不适用于我的情况。也许一些cats/scalaz数据结构在这里很有用?还是其他方式?

s.map{ e => if(f(e)) transform(e) else e }

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

替代解决方案是在视图List(1, 2, 3).view.map(...)上映射而不创建新列表,并且仅在需要时"具体化"结果

相关内容

  • 没有找到相关文章

最新更新