我在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)
答案 0 :(得分:2)
您已将t2
变量声明为静态类型TreeMap[Int, Int]
。因此,对于编译器,每次使用t2
时,它都会假定它是TreeMap[Int, Int]
的实例。 lowerNeighbor
不是在TreeMap
上定义的方法,而是在BinarySearchTree
上定义的方法。如果要调用BinarySearchTree
方法,则变量的静态类型必须为lowerNeighbor
。*
*这忽略了隐式转换,一旦你弄清楚静态类型与动态类型问题,你可能想要阅读它。