Scala Def Macros - 如何获取符号的参数化类型成员?

时间:2013-08-19 22:18:42

标签: scala scala-macros parameterized-types

我正在尝试在MACRO上下文中的符号上获取成员的参数化类型。我只有一个符号可用(不能使用weakTypeOf [List [Blah]]),因为我正在迭代一堆类。

val meWantArg = classSymbol.member("paramList": TermName).typeSignature

返回......

=> List[IWantThis]

如何获取IWantThis Type对象???

我试过了:

meWantArg.typeSymbol.asType.typeParams //returns List(type A)

我尝试过提取:

TypeRef(_,_,args) = meWantArg //returns ()

请记住,我使用的是2.10.2宏插件。

1 个答案:

答案 0 :(得分:3)

我猜测=> IWantThis paramList不是val,而是没有括号的arity-0方法:

def paramList: List[IWantThis] = ???

如果是,则成员是方法类型,您必须在中提取参数之前获取方法的返回类型:

val meWantArg = classSymbol.member("paramList": TermName).asMethod.returnType
val TypeRef(_,_,args) = meWantArg