我正在使用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
对象中创建一个类型并将其设为新类型?
答案 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]