这是我面临的问题的简化版本,但根本问题仍然存在。调用宏后,我想动态生成案例类。我能够从宏调用等中检索参数。我遇到的问题是尝试在准引号中使用字符串变量。我基本上想要以下内容:
def expand_impl(c: Context)(annottees: c.Expr[Any]*): c.Expr[Any] = {
import c.universe._
val toGen = "case class Foo()"
val toReturn = c.Expr[Any](
q"$toGen"
)
toReturn
}
但是,不会生成案例类。现在我知道如果我将 toGen 更改为 q"case class Foo()" 它将起作用,但是 toGen 是一个字符串,我将在其他一些返回字符串的处理之后生成,所以我不能这样做。像这样编译它并手动查看 toReturn 的值,我得到以下信息:
Expr[Any]("case class Foo()")
字符串 toGen 只是简单地粘贴在引号中,这意味着不会生成案例类。
我一直在寻找类似的问题,但在任何地方都找不到这个例子。如何在准引号内取消引用字符串变量的双引号?