2011-09-13 124 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)

相關問題