如何在图scala中获取节点类型

xzv2uavs  于 2023-03-08  发布在  Scala
关注(0)|答案(1)|浏览(117)

我正在使用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”而不是设置节点。有什么建议吗?我的基本问题是得到每个节点的类型来设置属性,但是我不能。

w3nuxt5m

w3nuxt5m1#

node有一个方法来获取示例类:

node.value match {
 ...

现在您可以使用模式匹配

相关问题