【发布时间】:2015-02-26 14:43:33
【问题描述】:
我有一个抽象类,我扩展并制作了许多案例类。现在我想复制那些只更改第一个参数的案例类的实例,所以我使用案例类的copy 方法。
由于我必须对从通用抽象类扩展而来的所有案例类执行此操作,而不是对所有案例类都执行此操作,因此我尝试使其具有通用性并将抽象类设为案例类。
然后 Scala 给了我这个:
case 类 Octopus 有 case 祖先 Organism,但禁止 case-to-case 继承。要克服此限制,请使用提取器在非叶节点上进行模式匹配。
代码:
abstract class Organism(legs: Int)
case class Octopus(override val legs: Int, weight: Double, ...)
case class Frog(override val legs: Int, ...)
def clone(o: Organism) = o.copy(legs = -1)
这就是我想做的。但是如果我不能使clone 方法工作,那么我将不得不为Octopus 和Frog 进行复制。
有什么建议可以减少这种冗长吗?
【问题讨论】:
标签: scala