假设我想创建一个简单的图形表示,它们的类型Vertex
和Edge
它们的类型相互依赖。具体实现可能如下所示:
case class Edge(id: Int, label: String, endpoints: (Vertex, Vertex))
case class Vertex(id: Int, data: Data, edges: Map[Int, Edge])
Edge
取决于,Vertex
反之亦然。我真正想要的是id
等data
具有泛型类型。我想知道如何设计这个最好的方式?
trait Vertex[A, B] {
def id: A
def data: B
// What about types for the edges etc?
}
trait Edge[A, ...] {
def id: A
def label: String
def endpoints: (Vertex[...], Vertex[...])
}
一个简单的例子将不胜感激。