Какой самый эффективный метод в 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))компилятором.

Я не видел ни одной функции компилятора или расширения, способных это сделать. Какова минимальная работа, необходимая для его реализации?

0 ответов

Другие вопросы по тегам