なぜ次のコード
def doSomething() = "Something"
var availableRetries: Int = 10
def process(): String = {
while (true) {
availableRetries -= 1
try {
return doSomething()
} catch {
case e: Exception => {
if (availableRetries < 0) {
throw e
}
}
}
}
}
次のコンパイラ エラーが生成されます
error: type mismatch;
found : Unit
required: String
while (true) {
^
?
これは C# で問題なく動作します。while は永久にループするため、終了できません。したがって、文字列以外の結果になることはありません。または、Scala で無限ループを作成する方法は?