2011-11-26 15 views
0

BinarySearchTreeにlowerBoundメソッドを作成しました。スカラは何かを拡張するメソッドを追加します

BinarySearchTreeはTreeMap [Int、Int]を継承します。

私はBinarySearchTreeでlowerBoundメソッドを作成しました。

コンパイラはそれを作った方法

treetest.scala:85: error: value lowerNeighbor is not a member of TreeMap[Int,Int] t2.lowerNeighbor(3) 

言いましたか? :)

class BinarySearchTree(private val root: Node) extends TreeMap[Int, Int] { 

    def lowerNeighbor(x : Int) : Int = { 
    var t = root 
......... 
    } 
} 


var t2: TreeMap[Int, Int] = new BinarySearchTree 
t2.lowerNeighbor(3) 
+1

さらにコードスニペットを提供できますか?たとえば、 'lowerNeighbor'を定義した場所と' t2'をインスタンス化する方法を表示できますか? – huynhjl

+0

私のソースコードを追加します – Silvester

+0

「ノード」のタイプはどこから得られますか?ツリーは不変なので、空のTreeMapを拡張すると、実行する操作ごとに新しいTreeMapが作成され、BinarySearchTreeは作成されません。もちろん指定しない限り。 –

答えて

2

あなたは、静的な型TreeMap[Int, Int]であるように、あなたのt2変数を宣言しました。したがって、コンパイラでは、t2を使用するたびに、それはTreeMap[Int, Int]のインスタンスとみなされます。 lowerNeighborは、TreeMapで定義されたメソッドではなく、BinarySearchTreeに定義されています。あなたの変数の静的な型は、あなたがlowerNeighborメソッドをコールする場合BinarySearchTreeなければならない。*

*これは、あなたが静的な型対を考え出した後、上に読むことをお勧めします暗黙の変換を、無視されます動的なタイプの問題。

関連する問題