Scala.NotImplementedError:缺少实现?

时间:2013-09-19 18:09:49

标签: scala

这是我的代码:

package example

object Lists {

  def max(xs: List[Int]): Int = {
    if(xs.isEmpty){
        throw new java.util.NoSuchElementException()
    }
    else {
        max(xs.tail)
    }
  }
}

当我在sbt控制台中运行时:

scala> import example.Lists._
scala> max(List(1,3,2))

我有以下错误:

Scala.NotImplementedError: an implementation is missing

我该如何解决?

感谢。

5 个答案:

答案 0 :(得分:20)

打开example.Lists,你会看到以下几行:

def sum(xs: List[Int]): Int = ???
def max(xs: List[Int]): Int = ???

使用0代替???

答案 1 :(得分:6)

另外,为应该起作用的max设置正确的递归实现

  def max(xs: List[Int]): Int = {
    if(xs.isEmpty){
      throw new java.util.NoSuchElementException()
    }
    val tailMax =  if (xs.tail.isEmpty)  xs.head else max(xs.tail)
    if (xs.head >= tailMax){
      xs.head
    }
    else  tailMax;
  }

答案 2 :(得分:4)

我遇到了同样的问题,因为我没有使用以下命令从sbt退出Scala控制台(在IntelliJ中):

scala> :q

然后从sbt重新启动控制台,以便可以再次编译所有内容。

> console

但是没有必要重启sbt。

答案 3 :(得分:1)

我遇到了同样的问题。但我已经修好了。

解决方案是您应该重新启动“sbt控制台”,然后再次导入模块,它可以正常工作。

答案 4 :(得分:0)

按如下所示替换您的代码(我正在使用sbt-1.3.13): 包示例

object Lists {

  def sum(xs: List[Int]): Int = {
    if (xs.isEmpty) 0
    else xs.head + sum(xs.tail)
  }

  def max(xs: List[Int]): Int = {
    val head = xs.head
    val tail = xs.tail
    if (tail.isEmpty) head
    else {
      val m = max(tail)
      if (head >= m) head else m
    }
  }
}