【发布时间】:2012-05-29 16:15:59
【问题描述】:
为什么要关注代码
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 中进行无限循环?
【问题讨论】:
-
+1 感谢您提供有关 tailrec 陷阱的提示和更多信息。
标签: scala loops infinite-loop