Это продолжение того, что бета-версия Scala 2.8.0 не отвечает на этот вопрос:
Новый метод заключается в копировании класса case, например.
case class Person(name:String, email:String)
val bob = Person("Bob", "[email protected]")
val jill = bob.copy(name = "Jill")
Это прекрасно работает, за исключением того факта, что Scala, похоже, ограничивает меня 22 (?) свойствами в классе case. Это может показаться много, в моем случае этого недостаточно.
С 23 я получаю: «ошибка: тип Function23 не является членом пакета scala». Возможно, я мог бы определить свою собственную функцию Function23 и т. д., но я не знаю последствий этого.
Итак, теперь я вернулся к исходной точке. Мне нужно использовать общедоступные переменные, которых я пытаюсь избежать, или создать конструктор с 26+ параметрами и метод парного копирования. Ик.
22 здесь кажется довольно произвольным пределом. Это можно обойти?
Это для импорта данных, который выглядит примерно так:
new CatalogImportRecord() {
override val List(SVal(vendorSku), SVal(title), IVal(issues),
_, // YToMVal(termMonths),
DVal(sellPrice), DVal(buyPrice), DVal(retailPrice), NotesVal(allowsNew, allowsRenewals),
_) //DateValMdy(lastUpdated))
= fields
Как видите, я закомментировал неиспользуемые извлечения, чтобы уменьшить количество полей.
Может быть, есть лучший способ сделать это. Я нахожу эту технику извлечения немного жесткой, но это может быть и к лучшему.