我想知道是否有更好的方法来做到这一点:
sealed abstract class Edge(val id: String)
case class LabeledEdge(override val id: String, label: String)
extends Edge(id)
case class WeightedEdge(override val id: String, weight: Double)
extends Edge(id)
我的问题是,我有相当多的成员id
以外的类在这里表示为Edge
。我必须在抽象类中定义每个成员之前编写override val
,这使得它非常麻烦,并且认为应该有一些更好的方法来做到这一点。
提前感谢!
您可以将trait
与抽象def
s(或val
s)一起使用,而不使用构造函数:
sealed trait Edge{ def id(): String } // or { val id: String }
case class LabeledEdge(id: String, label: String) extends Edge
case class WeightedEdge(id: String, weight: Double) extends Edge