給定一個包含變量類型項目的Scala集合,我可以按類型進行過濾。如何參數化按類型過濾Scala對象的集合?
trait X
case class Y(y:Int) extends X
case class Z(z:Int) extends X
val l = List(Y(1), Y(2), Z(3), Z(4))
l.collect{case e: Y=>e} // returns List[Y] = List(Y(1), Y(2))
l.collect{case e: Z=>e} // returns List[Z] = List(Z(3), Z(4))
我需要參數化過濾。最後一行返回error: not found: type f
。在這個case
語法中不允許Scala類型的參數化。
是否有Scala-esque的方式來參數化這個過濾操作? (也許使用collect
函數以外的東西。)是否需要反射?