Scala quasiquote 生成带反引号的参数默认值

Scala quasiquote generating parameter default value with backticks

我需要生成:

case class Foo(param: Bar = BarEnum.SomeCaseObject)

但是这段代码:

val term = TermName("BarEnum.SomeCaseObject") 
showCode(q"""case class Foo(val param : Bar = ${term})""") 

输出反引号包围的默认参数,不编译:

case class Foo(param: Bar = `BarEnum.SomeCaseObject`)

如何获取不带反引号的默认参数值输出?

您正在尝试使用 name "BarEnum.SomeCaseObject" 创建值,这是非法标识符,因此在反引号中。

您可以使用 Select(Ident(TermName("BarEnum")), TermName("SomeCaseObject")) 或(更好)q"BarEnum.SomeCaseObject"(假设 SomeCaseObject 是一个术语)。