2017-10-17 90 views
0

我在斯卡拉使用內部類掙扎。我試圖實現一個使用Node的子類的樹。我不斷收到類型爲Node的錯誤。我不斷收到這兩個構造函數中的錯誤。斯卡拉內部類

class avlTree[T] private (var root:Node) { 
    class Node (val element:T){ 
     var leftChild:Node = _; 
     var rightChild:Node = _; 
     var height:Int=0; 
    } 

    def this(x:T) = this(new Node(x)) 

} 
+1

您不能同時在avlTree中定義節點,並且使用Node作爲avlTree的構造函數參數,因爲它在構造函數運行時不在範圍內。 –

+0

@DavisBroda好的謝謝。我想確保沒有辦法做到這一點,我失蹤 – zamsler

+0

@DavisBroda你應該張貼作爲一個答案! – Ethan

回答

1

如果Node是一個內部類,這意味着每個Node屬於一個avlTree,你不能,而不必首先它會屬於樹創建Node

val tree: avlTree[Int] = ... 
new tree.Node(1) 

所以你構造函數意味着要創建一棵樹,你需要有一個屬於這棵樹的節點,所以樹必須已經存在。