可以加倍Type输入参数scala

时间:2019-03-09 16:20:05

标签: scala

我写了以下代码:

`  private def maxYinRange(minX: Double,
                              maxX: Double,
                              minY: Double,
                              node: PointerPSTNode): Double = {
       if (node == null || node.getY < minY) java.lang.Double.NEGATIVE_INFINITY
       val nodeX: Double = node.getX
       if (nodeX >= minX && nodeX <= maxX) node.getY
       val leftChild: PointerPSTNode = node.getLeftChild
       if (leftChild != null) {
       val nodeR: Double = maxX(leftChild)/*here is the error*/
       // nodeR >= points in left tree >= minX
        if (nodeR >= minX && nodeR < maxX) {
            val maxLeft: Double = maxYinRange(minX, maxX, minY, leftChild)
            val maxRight: Double =
              maxYinRange(minX, maxX, minY, node.getRightChild)
            (if (maxLeft < maxRight) maxLeft else maxRight)
          } else if (nodeR >= minX) {
            maxYinRange(minX, maxX, minY, node.getLeftChild)
          } else if (nodeR < maxX) {
            maxYinRange(minX, maxX, minY, node.getRightChild)
          }
        }
        java.lang.Double.NEGATIVE_INFINITY
      }`

但是出现以下错误:Double不接受参数(错误在此行val nodeR: Double = maxX(leftChild)
而且我不知道该怎么解决。

1 个答案:

答案 0 :(得分:0)

从逻辑的角度看,这似乎是您的意思

val nodeR: Double = leftChild.getX

但是,即使此问题已解决,该函数也始终会返回NEGATIVE_INFINITY,因为那是方法中的最后一个值。其余代码已执行,但不会影响结果(编译器可能会警告您)

即使已修复该问题,该逻辑似乎也不太可能做您想要的事情。您还应该考虑使用Option来保存叶子指针,而不要使用null