Scala add方法扩展了一些东西

时间:2011-11-26 17:14:12

标签: scala syntax

我在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 个答案:

答案 0 :(得分:2)

您已将t2变量声明为静态类型TreeMap[Int, Int]。因此,对于编译器,每次使用t2时,它都会假定它是TreeMap[Int, Int]的实例。 lowerNeighbor不是在TreeMap上定义的方法,而是在BinarySearchTree上定义的方法。如果要调用BinarySearchTree方法,则变量的静态类型必须为lowerNeighbor。*

*这忽略了隐式转换,一旦你弄清楚静态类型与动态类型问题,你可能想要阅读它。