ash*_*ina 1 for-loop scala return scala-2.10
我是 Scala 新手,所以尝试先做简单的事情。
我写了一个方法如下。
//Given a list of numbers find the first number that is a multiple of 7
def FindFirstMultiple(input: List[Int]) : Int = {
for (
i <- input
if (i % 7 == 0)
)
return i
}
Run Code Online (Sandbox Code Playgroud)
这个方法会报错
type mismatch; found : Unit required: Int
Run Code Online (Sandbox Code Playgroud)
我无法理解这一点。当我没有返回类型而只是打印值时,它工作得很好。另外,为什么错误会波浪形地悬停在 i <- input. 我认为 Scala 编译器试图告诉我一些事情,但我就是无法理解。导致此错误的原因是什么?
如果你想用 for 循环运行它,你还需要添加一个 return 0,如下所示
def FindFirstMultiple(input: List[Int]) : Int = {
for ( i <- input if (i % 7 == 0)) return i
0
}
Run Code Online (Sandbox Code Playgroud)
需要最终值,因为当 if 不满足时 for 本身不会返回任何内容。
正如 user1779032 建议的更好的方法是
def FindFirstMultiple(input: List[Int]) = input.find(i => i % 7 == 0).getOrElse(0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2569 次 |
| 最近记录: |