我想做这样的事情:
trait Endo {
def apply[T](x: T): T
}
trait SuperType {
def endoMap(f: Endo): SuperType = macro SuperTypeMacro.endoMapImpl
}
case class Foo(x: Int) extends SuperType {
// endoMapImpl expands to
// Foo(f(x))
}
case class Bar(x: Int, y: Boolean) extends SuperType {
// endoMapImpl expands to
// Bar(f(x), f(y))
}
理想情况下,我唯一需要写的是extends SuperType
。可能吗?如果没有,我相信宏观注释应该允许这个;我是对的吗?
答案 0 :(得分:2)
我认为你正在寻找的是c.prefix
,它包含当前宏方法调用的接收者。一旦掌握了它,就可以对其类型进行分支。