在被称为scala(2.11)宏的方法中,有没有办法以编程方式确定Type
是否为case class
?
我正在研究的方法的API归结为:
def typeIsCaseClass(c: Context)(targetType: c.universe.Type): Boolean = {
// targetType "is case class?"
}
如果需要,我愿意改变API。
答案 0 :(得分:4)
符号通常包含所有有趣的信息:
def typeIsCaseClass(c: Context)(targetType: c.universe.Type): Boolean = {
val sym = targetType.typeSymbol
sym.isClass && sym.asClass.isCaseClass
}