List 通过Scala中的函数筛选列表

List 通过Scala中的函数筛选列表,list,scala,filter,List,Scala,Filter,我需要根据集合的结果筛选列表。 例如,这项工作: (List(1, 2, 3, 4, 5, 6, 7, 8, 9) filter (_!= 1)) 输出列表(2,3,4,5,6,7,8,9) 但是,我需要通过两个返回集合的函数来过滤这个列表(例如,它返回集合(1,2)),并且当前列表需要通过这些函数过滤 你知道怎么做吗? 我已经试过使用&&了,但它不起作用 提前谢谢。试试这个 scala> val raw = Set(1,2) raw: scala.collection.immutabl

我需要根据集合的结果筛选列表。 例如,这项工作:

(List(1, 2, 3, 4, 5, 6, 7, 8, 9) filter (_!= 1))
输出列表(2,3,4,5,6,7,8,9) 但是,我需要通过两个返回集合的函数来过滤这个列表(例如,它返回集合(1,2)),并且当前列表需要通过这些函数过滤

你知道怎么做吗? 我已经试过使用&&了,但它不起作用

提前谢谢。

试试这个

scala> val raw = Set(1,2)
raw: scala.collection.immutable.Set[Int] = Set(1, 2)

scala> val column = Set(3,4)
column: scala.collection.immutable.Set[Int] = Set(3, 4)

scala> val l = (1 to 9).toList
l: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)

scala> l.filterNot(x => raw(x) || column(x))
res9: List[Int] = List(5, 6, 7, 8, 9)
根据@4e6的评论

scala> l.filterNot(raw ++ column)
res9: List[Int] = List(5, 6, 7, 8, 9)

你想做什么还不清楚。“通过返回集合的两个函数过滤此列表”是什么意思?给出给定输入和预期输出的示例。代码中没有递归。可以尝试使用点表示法,而不是空格分隔的方法调用。这可能会混淆编译器。由于
Set[A]
扩展函数
A=>Boolean
,您可以执行
1到9过滤器not(row++col)
@user2947615是的,因为
Set
是一个函数,您可以将其用作
filter
参数<代码>++只是在应用于函数之前连接集合。