0

例如:

seq.collect {case clazz: SomeClass => clazz}

可以返回 SomeClass 实例的集合,并且看起来运行良好。

但如果我这样做:

seq.collect {case _ <: SomeClass => _}
seq.collect {case clazz <: SomeClass => clazz}

他们都失败了。这样做的正确语法是什么?

4

1 回答 1

0

您的第一个解决方案已经满足您的需求。由于case x: SomeClass也匹配子类。

考虑:

class A
class B extends A

Seq(new A(), new B(), "bar") collect {
  case x: A => x
}

这将给你Seq(A@..., B@...)如你所愿并键入Seq[A]

于 2013-09-15T21:31:56.660 回答