Scala宏:如何获取泛型List的Type对象

时间:2014-01-16 14:39:35

标签: scala scala-macros type-parameter

我正在使用Scala宏,我希望将Symbol的类型与List[T]匹配,其中T是给定的Type。我已经拥有Type类型参数的T对象。

很容易获得List[_]的Type对象:

  val listType = c.weakTypeOf[List[_]]

有了这个,我已经可以检查typeSignature

  sourceParam.typeSignature match {
    case paramType if paramType <:< listType =>
      ....
  }

但我想用List[T]检查paramType,那么如何在List[_]和某个Type对象中创建一个类型并将其设为新类型?

1 个答案:

答案 0 :(得分:4)

scala> val tpeList = typeOf[List[_]]
tpeList: reflect.runtime.universe.Type = scala.List[_]

scala> appliedType(tpeList, List(typeOf[Int]))
res0: reflect.runtime.universe.Type = scala.List[Int]