2011-09-13 5 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

最後の演算のスカラ結果は戻り値になります。最後の操作では、返す値がIntである間に、何も返さないループ(または、必要であれば、何もないものと同じであるUnitを返します)がwhileのループです。

あなたがp個の書き込みの値を返す必要があれば、この:Scalaの機能で

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")です。

関連する問題