使用Scala的模式匹配匹配参数化类型

时间:2015-01-02 07:54:16

标签: scala generics types pattern-matching

我有一个class Operator[T: TypeTag : ClassTag]及其方法,我想在参数化类型T上使用Scala的模式匹配。我知道模式匹配是如何工作的,所以在Scala的repl中尝试了以下内容并得到了错误。

scala> def matchTest() = T match {
     | case x: String => "abcd"
     | case _ => null
     | }
<console>:11: error: not found: value T
       def matchTest() = T match {
                            ^

1 个答案:

答案 0 :(得分:5)

T是一种类型,而不是一种价值。您只能匹配值。

您可以获得implicitly[ClassTag[T]]implicitly[TypeTag[T]]这些值,并对其进行匹配。