比方说,我有这种层次的为我的数据:如何单独的超类型的序列为Seqs亚型
sealed trait Foolike
case class Foo extends Foolike
case class Bar extends Foolike
case class Baz extends Foolike
现在我想建立一个API,你可以把任何这些参数,像这样的:
def apiMethod(modifiers: Foolike*) = {
val foos = modifiers
.filter(_.isInstanceOf[Foo])
.map(_.asInstanceOf[Foo])
val bars = modifiers
.filter(_.isInstanceOf[Bar])
.map(_.asInstanceOf[Bar])
}
是否有更好的方法来提取所有从modifiers
的Foo
S和所有Bar
S'
我会建议使用case类模式匹配http://docs.scala-lang.org/tutorials/tour/case-classes.html – jerome
'foos = modifiers.collect {case x:Foo => x}'and'bars = modifiers.collect {case x :Bar => x}'。类型也是你想要的! – Alec