scala - 尝试在 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)
我无法打印列表的值
解决方案
更多功能: 您可以使用 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)
推荐阅读
- jquery - 如何在 javascript 和 jquery 上添加切换?
- git - 收集所有更改的文件并在合并后提交
- android - 比 Android 应用程序更具体的应用程序的 iOS 位置
- fft - 具有变化空间频率的平面波的二维 FFT
- javascript - 如何将查询字符串值从 php 传递到 HTML 页面?
- amazon-web-services - EC2 实例自动重启并解除我的弹性 IP 和目标组的关联
- web - 尝试在任何计算机上创建可通过命令行(终端/Linux)访问的受密码保护的数据库,从哪里开始?
- cucumber - 如何将Excel文件转换为黄瓜数据表
- scala - 如何将 spark 数据帧转换为适合 hbase 批量放置的 ArrayByte?
- java - 当我想在 Java 的类方法中使用类字段时,定义最终局部变量是一种好习惯吗?