比方說,我有這種層次的爲我的數據:如何單獨的超類型的序列爲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