我写的代码在下面提到
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)
我无法打印列表的值
答案 0 :(得分:3)
更多功能: 您可以使用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)
答案 1 :(得分:1)
尝试以下操作:
def genericFilter[A](f:(A) => Boolean, list:Seq[A]):Seq[A] = {
for { x <- list ; if(f(x)) } yield x
}
println(genericFilter((x:Int)=>x%2==0, Seq(1,2,3,4)))
它将打印包含满足功能f的元素的列表。