Подтвердить что ты не робот

Scala.NotImplementedError: реализация отсутствует?

Вот мой код:

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

Как я могу это исправить?

Спасибо.

4b9b3361

Ответ 1

Откройте example.Lists, вы увидите ниже строки:

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

используйте 0 вместо ???.

Ответ 2

Кроме того, помещая правильную рекурсивную реализацию для 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;
  }

Ответ 3

У меня была такая же проблема, потому что я не вышел из консоли Scala (в IntelliJ) из sbt с помощью команды:

scala> :q

а затем перезапустил консоль из sbt, чтобы все можно было скомпилировать снова.

> console

Нет необходимости перезапускать sbt.

Ответ 4

У меня такая же проблема. Но я исправил это.

Решение состоит в том, что вы должны перезапустить "консоль sbt" и снова импортировать модуль, он отлично работает.