0
我想縮小泛型類型。它編譯,但結果不是預期的(Container(A),Container(B)..)而不是(Container(A),Container(A))。 我在做什麼錯?使用類標籤變窄
sealed trait Base
case class A() extends Base
case class B() extends Base
case class Container[+T](item: Base)
object Test {
import scala.reflect.ClassTag
def narrowContainer[T <: Base](list: List[Container[Base]])(implicit tag: ClassTag[T]): List[Container[T]] = {
list.collect{ case t: Container[T] => t }
}
def testNarrowContainer(){
val li = List(A(),B(),A(),B()).map(Container(_))
println(narrowContainer[A](li))
println(narrowContainer[B](li))
}
def main(args: Array[String]){
testNarrowContainer()
}
}
Lars Hupel在scala用戶郵件列表上給出了正確的答案。有人可以在這裏發佈。 – 2013-02-28 20:46:23