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

Kam*_*nga 1 generics types scala pattern-matching

我有一种class Operator[T: TypeTag : ClassTag]方法,我想在参数化类型上使用Scala的模式匹配T。我知道模式匹配的工作原理,因此在Scala的repl中尝试了以下操作,并得到了一个错误。

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

Dan*_*ral 5

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

您可以获取implicitly[ClassTag[T]]implicitly[TypeTag[T]],它们是值,并对其进行匹配。