Я пытаюсь ответить этот вопрос.
Вместо того, чтобы писать:
case class Person(name: String, age: Int) {
def this() = this("",1)
}
Я думал, что буду использовать аннотации макросов, чтобы расширить его:
@Annotation
case class Person(name: String, age: Int)
Поэтому я попытался добавить новый конструктор как старый добрый DefDef
, используя квазикавычки в аннотации макроса, например:
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
Есть ли способ исправить это? Что я упустил?
Спасибо, что заглянули, - Джулиан.