如何以良好的方式定义密封抽象类的成员



我想知道是否有更好的方法来做到这一点:

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

最新更新