scala eclipse工作表中的@tailrec错误:预期的定义开始

T. *_*Rex 6 scala

我是scala的新手,我正在练习工作表.我注意到@tailrec在工作表中不起作用,即使我添加了导入

import scala.annotation.tailrec
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的scala版本

Scala code runner version 2.10.2 -- Copyright 2002-2013, LAMP/EPFL
Run Code Online (Sandbox Code Playgroud)

有没有办法让它发挥作用?谢谢

小智 9

您描述的问题是Eclipse IDE for Scala中的一个错误:https: //scala-ide-portfolio.assembla.com/spaces/scala-ide/tickets/1001636#/activity/ticket

解决方法是将@tailrec放在def或不同的对象中.

例如:

package tailrecfunc

import scala.annotation.tailrec

object Session17 {
  val block = {
    @tailrec
    def tailrecfunc(n: Int): Int =
     if(n == 0) n; else tailrecfunc(n - 1)

    tailrecfunc(4)
  }                                          
}
Run Code Online (Sandbox Code Playgroud)

这样,当函数不是尾递归时,scala解释器会发出警告