Это продолжение теперь, когда бета-версия Scala 2.8.0 вышла на этот вопрос:
Как правильно управлять гибкими типизированными неизменяемыми структурами данных в Scala?
Новый метод заключается в копировании класса дел, например,
case class Person(name:String, email:String)
val bob = Person("Bob", "bob@z.com")
val jill = bob.copy(name = "Jill")
Это прекрасно работает, за исключением того факта, что Scala, кажется, ограничивает меня 22 (?) Свойствами в классе case. Это может показаться много, в моем случае этого недостаточно.
При 23 я получаю: «ошибка: тип Function23 не является членом пакета scala». Я мог бы определить свою собственную функцию23 и т. Д., Но я не знаю последствий этого.
Так что теперь я вернулся к исходной точке. Мне нужно использовать публичные переменные, которых я пытаюсь избежать, или создать конструктор 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
Вы можете видеть, что я закомментировал неиспользованные извлечения, чтобы уменьшить количество полей.
Может быть, есть лучший способ сделать это. Я считаю эту технику извлечения немного жесткой, но это может быть к лучшему.