Scala -quasiquote生成参数默认值,并带有反向



我需要生成:

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"创建值,这是非法标识符,因此在Backticks中。

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

相关内容

  • 没有找到相关文章

最新更新