首页 > 解决方案 > 尝试在 Scala 中编写通用过滤器函数

问题描述

我写的代码在下面提到

def genericFilter[A,B](f:(A) => B, list:Seq[A]):Seq[B] = {  
  for { x <- list ; if(f(x)!=false) } yield f(x)  
}

我正在尝试编写过滤器函数,但函数的输出总是产生一个类似的序列

Seq[Boolean] = List(true, true)

我无法打印列表的值

标签: scala

解决方案


更多功能: 您可以使用 foldRight 来遍历列表并根据条件进行过滤。

val l = List.tabulate(10)(_ + 1)
def filter[T](l: List[T])(op: T => Boolean): List[T] = {
  l.foldRight(List[T]())((b, a) => if(op(b)) b :: a else a)
}
filter(l)(_ > 3)

推荐阅读