假设我有一个List [T],其中E扩展为T.我想得到列表中的所有E。 我必须做类似的事情:
val l = list filter {_.isInstanceof[E]} map {_.asInstanceOf[E]}
有更好的方法吗?
由于
答案 0 :(得分:11)
您正在寻找collect
:
scala> trait Quux
defined trait Quux
scala> case class Bar() extends Quux
defined class Bar
scala> case class Baz() extends Quux
defined class Baz
scala> val l = List(Bar(), Baz())
l: List[Product with Serializable with Quux] = List(Bar(), Baz())
scala> l.collect { case bar:Bar => bar }
res1: List[Bar] = List(Bar())