gpt4 book ai didi

scala - 有条件地过滤一个序列

转载 作者:行者123 更新时间:2023-12-04 16:40:46 26 4
gpt4 key购买 nike

假设我有一个 Option[A => Boolean] , 一个 List[A] ,以及我想在该列表的子集上执行的一些操作。如果设置了该选项,那么我想先过滤列表,然后应用我的操作。如果没有,那么我想将它应用于整个列表。一个例子:

val a : Option[Int => Boolean] = Option((a : Int) => a % 2 == 0)
val b = 1 to 100

我可以轻松地做到以下几点:
val c = if (a.isDefined) b.filter(a.get) else b

但是,这涉及到调用 a.get ;太多的条件让我无法做到这一点!我也可以这样做:
val c = b.filter(a.getOrElse(_ => true))

这感觉更好,但现在我被困在为我的序列的每个元素执行第二次(尽管微不足道)操作。我希望它会被优化,但这仍然感觉不完美。

我想要的是缺少任何一个缺陷的东西。感觉应该有一个很好的方法来做到这一点 - 有什么想法吗?

最佳答案

您只需要使用正常的选项处理方法:

a.map(b.filter).getOrElse(b)

关于scala - 有条件地过滤一个序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9180812/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com