[英]Pattern Matching on Generic Trait's Parameterized Type
鑒於以下特征:
trait Foo[_ <: Product] {}
如何在Foo的泛型類型上進行模式匹配?
換句話說,有沒有一種方法可以在不使用運行時反射的情況下獲得Foo
的_
?
_
作為類型參數的全部要點是指定類型是未知的 。
這是可能的,而且我仍然認為我的評論中提到的是重復的,但是我想表明無論如何您都可以做到。 將om-nom-nom歸功於原始答案:
trait Foo[_ <: Product]
case class Bar(i:Int)
case class Baz(s:String)
val fooBar = new Foo[Bar]{}
val fooBaz = new Foo[Baz]{}
checkType(fooBar)
checkType(fooBaz)
def checkType[T <: Product : TypeTag](foo:Foo[T]){
foo match{
case f if typeOf[T] <:< typeOf[Bar] => println("its a bar")
case f if typeOf[T] <:< typeOf[Baz] => println("its a baz")
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.