从列表中过滤单位

时间:2013-10-10 16:43:07

标签: scala

给定List,我想过滤掉任何等于Unit - ()的元素。

有没有比通过此代码更好的过滤方式?

scala> List( () ).filter( x => x != () )
<console>:8: warning: comparing values of types Unit and Unit using `!=' will 
always yield false
                  List( () ).filter( x => x != () )
                                            ^
    res10: List[Unit] = List()

3 个答案:

答案 0 :(得分:3)

您可以使用模式匹配:

list.filter(_ match {
   case x : Unit => false
   case x => true})

答案 1 :(得分:3)

scala> List(()).filterNot(_.isInstanceOf[Unit])
res0: List[Unit] = List()

scala> List((),1,2).filterNot(_.isInstanceOf[Unit])
res1: List[AnyVal] = List(1, 2)

答案 2 :(得分:3)

我会这样做:

List(1, (), 4, (), 9, (), 16) filter (_ != ())
res0: List[AnyVal] = List(1, 4, 9, 16)