现在 Scala 2.8.0 beta 已经解决了这个问题,这是一个后续行动:
在 Scala 中管理灵活、类型化、不可变数据结构的正确方法是什么?
新技术是复制一个案例类,例如
case class Person(name:String, email:String)
val bob = Person("Bob", "bob@z.com")
val jill = bob.copy(name = "Jill")
这很好用,除了 Scala 似乎将我限制为案例类中的 22 个(?)属性。这可能看起来很多,在我的情况下还不够。
使用 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
您可以看到我注释掉了未使用的提取以减少字段数量。
也许有更好的方法来做到这一点。我发现这种提取技术有点死板,但这可能是最好的。