我很困惑,爲什麼,因爲我期望它這不會跑,我曾試圖多次改變它,它仍然給出一個錯誤,指出它給出Unit
並且需要Int
。
def div(m: Int, n: Int): Int = {
var counter = 0
var p = m
while (p >= 0) {
p -= n
counter += 1
println(counter)
}
}
我很困惑,爲什麼,因爲我期望它這不會跑,我曾試圖多次改變它,它仍然給出一個錯誤,指出它給出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