foreach in return to return value

xcv*_*cvd 2 methods foreach scala

def a: Int = {
  for(i <- Array(1,2,3,4,5)){
    if(i == 3)
      return i
  }
}
Run Code Online (Sandbox Code Playgroud)

上面的方法不会编译,我得到以下错误:

error: type mismatch;
 found   : Unit
 required: Int
       for(i <- Array(1,2,3,4,5)){
             ^
Run Code Online (Sandbox Code Playgroud)

预期的行为是该方法返回3.我的代码有什么问题?

dre*_*xin 13

那是因为你的lambda foreach确保返回一个值.如果您提供默认返回值,它应该工作.

def a: Int = {
  for(i <- Array(1,2,3,4,5)){
    if(i == 3)
      return i
  }
  0
}
Run Code Online (Sandbox Code Playgroud)