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.我的代码出了什么问题?
答案 0 :(得分:13)
这是因为foreach
中的lambda确保返回一个值。如果您提供默认返回值,它应该可以工作。
def a: Int = {
for(i <- Array(1,2,3,4,5)){
if(i == 3)
return i
}
0
}
答案 1 :(得分:2)
这是因为没有其他或默认的返回值。
如果方法的返回类型为Int,则该方法中的所有路径都必须返回Int。在您的实现中不是这种情况。例如,如果在数组中没有数字3,则不会返回任何内容,这意味着返回类型将为Unit。
答案 2 :(得分:0)
不要在#Scala中使用Return。 return关键字不是“可选”或“推断”;它会改变你的程序的含义,你永远不应该使用它。