有没有一种方法可以扩展案例类,而又不需要不断增加新的值(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

07-24 18:27