在Scala中非法启动简单表达式

Chu*_*cks 11 syntax scala

我刚开始学习scala.在尝试实现递归函数时,我在eclipse中收到错误"非法启动简单表达式":

def foo(total: Int, nums: List[Int]): 
  if(total % nums.sorted.head != 0)
    0
  else 
    recur(total, nums.sorted.reverse, 0)

def recur(total: Int, nums: List[Int], index: Int): Int =
  var sum = 0 // ***** This line complained "illegal start of simple expression"
              // ... other codes unrelated to the question. A return value is included.
Run Code Online (Sandbox Code Playgroud)

谁能告诉我在(递归)函数中定义变量我做错了什么?我在网上进行了搜索,但无法解释这个错误.

Mau*_*res 9

变量declaration(var)不返回值,因此您需要以某种方式返回值,以下是代码的外观:

object Main {

  def foo(total: Int, coins: List[Int]): Int = {

    if (total % coins.sorted.head != 0)
      0
    else
      recur(total, coins.sorted.reverse, 0)

    def recur(total: Int, coins: List[Int], index: Int): Int = {
      var sum = 0
      sum
    }

  }


}
Run Code Online (Sandbox Code Playgroud)

  • 这是使用scala时要记住的最重要的一点.作业将返回```Unit``` (2认同)