小编Kam*_*nga的帖子

Scala中的大小写继承

我有一个抽象类,我扩展并创建了大量的case类.现在我想复制那些只更改第一个参数的案例类的实例,所以我使用case类的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)
Run Code Online (Sandbox Code Playgroud)

这就是我想要做的.但是,如果我不能使该clone方法工作,那么我将不得不复制两个Octopus&Frog.

任何建议,以减少这种冗长?

scala

14
推荐指数
1
解决办法
4864
查看次数

标签 统计

scala ×1