我正在使用graph-scala库生成一个图形,我需要在生成图形后设置坐标。
我的对象是从GraphNode延伸出来的Ball和Figure,我使用GraphNode对象生成我的Graph:
val ball1=new Ball(1,"BALL-A")
val figure1=new Figure(1)
val figure2=new Figure(2)
val figure3=new Figure(3)
val edges = Seq(
(ball1, figure1),
(figure2, ball1),
(ball1, figure3)
)
val graph1: Graph[GraphNode, HyperEdge] = edges
.map({ case (node1, node2) =>
Graph[GraphNode, HyperEdge](node1 ~> node2)
})
.reduce(_ ++ _)
现在我想为每个节点设置X,Y和Width属性:
graph1.nodes
.map(node => {
node match {
case b: Ball =>
println("is a ball!")
if (b.nodeType.equals("BALL-A"))
b.copy(x = 0, y = 0, width = 100)
else
b.copy(x = 30, y = 30, width = 200)
case otherType =>
val name = otherType.getClass.getSimpleName
println(name)
}
node.toJson
})
.foreach(println)
但是我得到了类型“NodeBase”而不是设置节点。有什么建议吗?我的基本问题是得到每个节点的类型来设置属性,但是我不能。
1条答案
按热度按时间w3nuxt5m1#
node有一个方法来获取示例类:
现在您可以使用模式匹配