我有一个抽象类,我扩展它并创建了许多案例类。现在我想复制这些案例类的实例,只需更改第一个参数,因此我使用案例类的copy
方法。
由于我必须对所有已从公共抽象类扩展的案例类执行此操作,而不是为所有案例类执行此操作,因此我尝试将其通用化,并使抽象类成为案例类。
然后Scala给我这个:
案例祖先生物的案例类章鱼,但禁止案例到案例的继承。要克服此限制,请使用提取器在非叶节点上进行模式匹配。
代码:
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
都进行复制。
有什么建议可以减少这种冗长吗?