为什么键入不匹配错误?

时间:2011-09-13 17:39:21

标签: scala

  

可能重复:
  Scala immutable variables and printing

我很困惑为什么这不会像我期望的那样运行,我试图多次更改它仍然会给出一个错误,指出它被赋予Unit并且需要Int。< / p>

def div(m: Int, n: Int): Int = {
  var counter = 0
  var p = m 
  while (p >= 0) {
    p -= n
    counter += 1
    println(counter)
  }
}

2 个答案:

答案 0 :(得分:9)

在最后一次操作的scala结果中将返回值。在你的代码片段中,当你指定{{1}的返回值时,最后一个操作是while循环,它不会返回任何东西(或者,如果你愿意,返回Unit,它与任何东西都是一样的) }。

因此,如果你需要返回p的值,请写下:

Int

答案 1 :(得分:0)

在Scala函数中返回最后一个表达式的结果。 “div”函数的最后一个表达式是while循环,它不返回任何值,因此函数中的结果类型为Unit(Java中为“void”)