2017-10-17 92 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) 

所以你构造函数意味着要创建一棵树,你需要有一个属于这棵树的节点,所以树必须已经存在。