我正在尝试获取宏上下文中符号上成员的参数化类型。我只有一个可用的符号(不能使用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 宏插件。
最佳答案
我从 => IWantThis
猜测 paramList
不是 val
而是不带括号的 arity-0 方法:
def paramList: List[IWantThis] = ???
如果是这样,则该成员是方法类型,并且您必须在从中提取参数之前获取该方法的返回类型:
val meWantArg = classSymbol.member("paramList": TermName).asMethod.returnType
val TypeRef(_,_,args) = meWantArg
关于Scala Def Macros - 如何获取符号的参数化类型成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18324029/