0

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

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在抽象类中定义的每个成员之前编写它,这使得它非常麻烦,并且认为应该有一些更好的方法来做到这一点。

提前致谢!

4

1 回答 1

4

您可以使用traitabstract defs(或vals)并且没有构造函数:

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
于 2013-06-22T08:30:10.677 回答