Код для определения элемента lat списка с использованием сопоставления с шаблоном:
@tailrec
def last_rec[A](list : List[A]) : A = {
list match {
case (x :: Nil) => x
case (_ :: xs) => last_rec(xs)
case Nil => throw new NoSuchElementException
}
}
Я хочу скомпилировать код, меня "кричит" компилятор:
PS D:\workspace\scala\P99> scalac .\P01.scala
.\P01.scala:18: error: could not optimize @tailrec annotated method last2: it contains a recursive call not in tail position
case Nil => throw new NoSuchElementException
^
one error found
Если я удаляю аннотацию @tailrec - код компилируется. Как я могу изменить код для оптимизации хвостовой записи?