簡體   English   中英

一般性狀的參數化類型的模式匹配

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM