例如:
seq.collect {case clazz: SomeClass => clazz}
可以返回SomeClass实例的集合,看起来效果很好。
但如果我这样做:
seq.collect {case _ <: SomeClass => _}
seq.collect {case clazz <: SomeClass => clazz}
他们都失败了。这样做的正确语法是什么?
答案 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]
。