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

标签 scala scala-macros parameterized-types

我正在尝试获取宏上下文中符号上成员的参数化类型。我只有一个可用的符号(不能使用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/

相关文章:

scala - for 循环和范围 : found :Int required: scala. collection.generic.CanBuildFrom[Nothing,String,?] 的奇怪行为

java - 泛型构造函数接受类型为 T 的类对象,并返回 T,这次 T 是一个 List

delphi - Delphi 中构造函数约束的用例是什么?

java - 子类中参数化父类(super class)方法和非参数化(具体类型)方法

java - Java/Scala 对垃圾回收做了哪些保证?

scala - 如何断言错误类型中的单个字段?

java - 在 IntelliJ IDE 中将 Spark 与 Scala 项目集成时出错

Scala 条件编译

scala - 编写生成语句的宏

scala - 如何在 Scala 3 宏中创建泛型类型的实例?