Scala добавить метод в расширении что-то - PullRequest
0 голосов
/ 26 ноября 2011

Я сделал метод lowerBound в моем BinarySearchTree.

BinarySearchTree расширяет TreeMap [Int, Int].

Поэтому я создал метод lowerBound в BinarySearchTree.

, но компилятор сказал

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 Ответ

2 голосов
/ 26 ноября 2011

Вы объявили переменную t2 статического типа TreeMap[Int, Int].Поэтому для компилятора каждый раз, когда вы используете t2, он будет предполагать, что это экземпляр TreeMap[Int, Int].lowerNeighbor - это не метод, определенный для TreeMap с, но для BinarySearchTree с.Статический тип вашей переменной должен быть BinarySearchTree, если вы хотите вызвать метод lowerNeighbor. *

* Это игнорирует неявные преобразования, которые вы, возможно, захотите прочитать, как только выВыяснились проблемы статического и динамического типов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...