一些算法执行条件为 true 的 while 循环,并且(肯定)会在某个点以 while 循环体内的 return 语句结束。例如:
def foo: Int = {
while(true) {
// At some time, the while loop will do a return statement inside its body
if( ... )
return 0
}
}
简单示例(无语义):
def foo: Int = {
var i = 0
while(true) {
i += 1
if(i == 10)
return 0
}
}
Scala 编译器抱怨类型不匹配,因为 while 循环的类型为 Unit 并且编译器不知道 while 循环将在某个时候返回一个值。我们可以通过以下解决方法解决此问题:
def foo: Int = {
var i = 0
while(true) {
i += 1
if(i == 10)
return 0
}
0 // !
}
但这看起来很难看。有更好的解决方法吗?甚至是解决此类问题的更好方法?