这是我的代码:
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
我该如何解决?
感谢。
答案 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
}
}
}