2017-10-17 19 views
0

私はScalaの内部クラスの使用に苦労しています。私はノードのサブクラスを使用するツリーを実装しようとしています。私はノードが見つからないというエラーが出てくる。私は両方のコンストラクタでエラーを取得し続けます。スカラの内部クラス

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を定義することはできません。また、NodeをavlTreeのコンストラクタ引数として使用することはできません。コンストラクタの実行時にスコープ内にないためです。 –

+0

@DavisBrodaありがとうございます。私はそれが私が行方不明だった方法がなかったことを確認したかった – zamsler

+0

@DavisBrodaあなたは答えとして投稿する必要があります! – Ethan

答えて

1

Nodeが内部クラスであれば、これは各NodeavlTreeに属し、あなたが最初にそれが属しているよツリーを持たずにNodeを作成することはできません意味:

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

だからあなたコンストラクタは、ツリーを作成するには、このツリーに属するノードを持つ必要があるため、ツリーは既に存在している必要があります。