18

这是我的代码:

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

我该如何解决?

谢谢。

4

5 回答 5

25

打开 example.Lists,您将看到以下几行:

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

使用0而不是???.

于 2013-09-23T09:59:03.443 回答
7

此外,为应该工作的最大值放置正确的递归实现

  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;
  }
于 2014-09-17T02:29:45.337 回答
5

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

scala> :q

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

> console

不过,没有必要重新启动 sbt。

于 2017-02-13T10:03:12.937 回答
1

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

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

于 2017-05-24T04:06:18.670 回答
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
    }
  }
}
于 2020-08-22T16:52:03.370 回答