2011-09-13 94 views
1

可能重复:
Scala immutable variables and printing为什么输入不匹配错误?

我很困惑,为什么,因为我期望它这不会跑,我曾试图多次改变它,它仍然给出一个错误,指出它给出Unit并且需要Int

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

昨天我刚刚回答了同样的问题。 http://stackoverflow.com/questions/7395682/scala-immutable-variables-and-printing – Dylan

回答

8

在scala中的最后一次操作的结果是返回值。在你的代码段中,最后一个操作是while循环,当你指定返回值Int时,它不会返回任何东西(或者,如果你愿意,还可以返回Unit,这与空白相同)。

所以,如果你需要返回p写这个值:

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

在斯卡拉函数返回最后一个表达式的结果。你的“div”函数的最后一个表达式是while循环,它不返回任何值,所以函数中的结果类型是Unit(“Java”中的void)

相关问题