我有以下宏定义一个类并返回该类的一个实例(使用 Scala 2.10.2 和宏插件):
def test[T] = macro testImpl[T]
def testImpl[T : c.WeakTypeTag](c: Context): c.Expr[Any] = {
import c.universe._
val className = newTypeName("Test")
c.Expr { q"""
class $className {
def method = 1
}
new $className
"""}
}
当我调用宏时:
case class Cat(name: String)
val t = test[Cat].method
我收到以下错误:
method method in class Test cannot be accessed in Test
val t = test[Cat].method
^
我的总体目标是使用吸血鬼方法并使用准引号来描述生成的类。我该如何解决这个错误?