Какой самый эффективный метод в Scala 3.2 для эта-расширения функции или конструктора класса с именами и аргументами по умолчанию?
Во время моего участия в проекте, который сильно зависит от привязки с проверкой типов к данным схемы. Я обнаружил, что многие из существующих кодов используют следующий шаблон:
case class Datum1(
col1: String = "default",
col2: Double = 0
... (over 40 columns)
)
case class Datum2(
col1: String = "default",
col2: Double = 0
... (over 40 columns)
)
case class Datum3
...
Очевидно, я бы расценил большую часть этого как шаблон, и в идеале их следует переписать, чтобы облегчить быструю эволюцию схемы базы данных. Самая близкая реализация, о которой я мог подумать, это:
case class SharedSchema(
col1: String = "default",
col2: Double = 0
... (over 40 columns)
)
case class Datum1(
schema: SharedSchema
)
case class Datum2(
schema: SharedSchema
)
case class Datum3
...
Когда та же функция call-siteDatum1(col2 = 1)
используется, его следует переписать вDatum1(SharedSchema(col2 = 1))
компилятором.
Я не видел ни одной функции компилятора или расширения, способных это сделать. Какова минимальная работа, необходимая для его реализации?