有没有一种方法可以扩展案例类,而又不需要不断增加新的值(value)?
例如,这不起作用:
case class Edge(a: Strl, b: Strl)
case class EdgeQA(a: Strl, b: Strl, right: Int, asked: Int) extends Edge(a, b)
"a" conflicts with "a"
,因此我被迫重命名为a1
。但是我不想要“a”的所有其他公共(public)副本,因此我将其设为私有(private)。case class Edge(a: Strl, b: Strl)
case class EdgeQA(private val a1: Strl, private val b1: Strl, right: Int, asked: Int) extends Edge(a, b)
这对我来说似乎并不干净...我错过了什么吗?
最佳答案
正如前面的评论者提到的:应该避免案例类扩展,但是您可以将Edge类转换为特征。
如果要避免使用私有(private)语句,还可以将变量标记为重写
trait Edge{
def a:Strl
def b:Strl
}
case class EdgeQA(override val a:Strl, override val b:Strl, right:Int, asked:Int ) extends Edge
在特征中不要忘了使用
def
而不是val