Опитвам се да отговоря на този въпрос.
Вместо да пише:
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
Има ли начин това да се поправи? Какво пропуснах?
Благодаря, че погледна, Джулиан