def a: Int = {
for(i <- Array(1,2,3,4,5)){
if(i == 3)
return i
}
}
上面的方法不会编译,我得到以下错误:
error: type mismatch;
found : Unit
required: Int
for(i <- Array(1,2,3,4,5)){
^
预期的行为是该方法返回 3。我的代码有什么问题?
那是因为您的 lambdaforeach
确实保证返回一个值。如果您提供默认返回值,它应该可以工作。
def a: Int = {
for(i <- Array(1,2,3,4,5)){
if(i == 3)
return i
}
0
}
这是因为没有 else 或默认返回值。
如果方法的返回类型为 Int,则该方法中的所有路径都必须返回 Int。在您的实施中并非如此。例如,如果 Array 中没有数字 3,则不会返回任何内容,这意味着返回类型将为 Unit。
不要在 #Scala 中使用 Return。return 关键字不是“可选的”或“推断的”;它改变了你程序的含义,你永远不应该使用它。