1

我需要生成:

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

但是这段代码:

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

输出由反引号包围的参数 default ,它不会编译:

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

如何在没有反引号的情况下获得默认参数值输出?

4

1 回答 1

2

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

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

于 2017-09-05T13:29:42.217 回答