为什么输入不匹配错误?
问题描述:
我很困惑,为什么,因为我期望它这不会跑,我曾试图多次改变它,它仍然给出一个错误,指出它给出Unit
并且需要Int
。
def div(m: Int, n: Int): Int = {
var counter = 0
var p = m
while (p >= 0) {
p -= n
counter += 1
println(counter)
}
}
答
在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
}
答
在斯卡拉函数返回最后一个表达式的结果。你的“div”函数的最后一个表达式是while循环,它不返回任何值,所以函数中的结果类型是Unit(“Java”中的void)
昨天我刚刚回答了同样的问题。 http://stackoverflow.com/questions/7395682/scala-immutable-variables-and-printing – Dylan