2015-12-23 60 views
2

我想模擬一個簡單圖形,其中每個節點都連接到另一個節點。構建帶有循環引用的不可變圖形

這似乎是給定的情況下一個節點的合理定義:

case class Node(other: Node) 

但是說,我想創建一個類似如下的圖表:

-------------- 
    |   | 
node_a   V 
^  node_b 
    |   | 
    -------------- 

這似乎不可能創造這樣的給定Node的定義的圖表,因爲other是不可變的,需要在創建時分配,但不可能同時創建兩個節點。

我想我可以只存儲該另一節點的名稱:

case class Node(name: String, otherName: String) 
... 
val n1 = Node("a", "b") 
val n2 = Node("b", "a") 
val nodes = Map(n1.name -> n1, n2.name -> n2) 

這需要產生每個節點的唯一標識符的附加步驟。這並不可怕,但我真的很喜歡直接使用節點本身遍歷圖的優雅,而不是nodes.get(n.other)

我在這裏尋找不可能的東西嗎?

回答

相關問題