2013-11-28 6 views
0

Мне нужно отфильтровать список по результату набора. Например, это работает:Фильтрация списка по функции в Scala

(List(1, 2, 3, 4, 5, 6, 7, 8, 9) filter (_!= 1)) 

Список Output (2,3,4,5,6,7,8,9) Однако мне нужно отфильтровать этот список два функции, которые возвращают набор (например, он возвращает Set (1,2)), и текущий список должен быть отфильтрован этими функциями.

Любые идеи, как это можно сделать? Я уже пробовал использовать & &, но он не работает

Заранее спасибо.

+0

Это не ясно, что вы хотите сделать. Что это значит: «Отфильтруйте этот список двумя функциями, которые возвращают набор»? Приведите пример данных ввода и ожидаемого результата. –

ответ

1

Попробуйте это,

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 «s,

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

ошибка: рекурсивное значение требуется тип – user2947615

+0

это решение работает для меня –

+0

В коде нет рекурсии. можно попробовать с точечной нотацией, а не с помощью метода разделения пространства. Это может смутить компилятор. – tiran

Смежные вопросы