在 Scala 宏中检测大小写 class
Detect case class in scala macro
在一个被称为 scala (2.11) 宏的方法中,有没有办法以编程方式确定 Type
是否是 case class
?
我正在使用的方法的 API 归结为:
def typeIsCaseClass(c: Context)(targetType: c.universe.Type): Boolean = {
// targetType "is case class?"
}
如果需要,我愿意改变 API。
这些符号通常包含所有有趣的信息:
def typeIsCaseClass(c: Context)(targetType: c.universe.Type): Boolean = {
val sym = targetType.typeSymbol
sym.isClass && sym.asClass.isCaseClass
}
在一个被称为 scala (2.11) 宏的方法中,有没有办法以编程方式确定 Type
是否是 case class
?
我正在使用的方法的 API 归结为:
def typeIsCaseClass(c: Context)(targetType: c.universe.Type): Boolean = {
// targetType "is case class?"
}
如果需要,我愿意改变 API。
这些符号通常包含所有有趣的信息:
def typeIsCaseClass(c: Context)(targetType: c.universe.Type): Boolean = {
val sym = targetType.typeSymbol
sym.isClass && sym.asClass.isCaseClass
}