如何在scala partial函数中指示继承类并使用通配符?

时间:2013-09-15 21:26:50

标签: scala

例如:

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

可以返回SomeClass实例的集合,看起来效果很好。

但如果我这样做:

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

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

1 个答案:

答案 0 :(得分: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]