我试图回答这个问题。
而不是写:
case class Person(name: String, age: Int) {
def this() = this("",1)
}
我想我会使用宏注释来扩展它:
@Annotation
case class Person(name: String, age: Int)
DefDef
因此,我尝试在宏注释的 impl 中使用准引号将新构造函数添加为普通旧构造函数,例如:
val newCtor = q"""def this() = this("", 1)"""
val newBody = body :+ newCtor
q"$mods class $name[..$tparams](..$first)(...$rest) extends ..$parents { $self => ..$newBody }"
但这会返回一个错误:called constructor's definition must precede calling constructor's definition
有没有办法解决这个问题?我错过了什么?
感谢您的观看,-朱利安