这是您的代码的功能翻译:
def my_function(condition: Int => Boolean): Int = {
(0 to 10).find(i => condition(i)).getOrElse(-1)
}
或者更简洁地说:
def my_function(condition: Int => Boolean): Int = {
(0 to 10).find(condition).getOrElse(-1)
}
我使用了find
将产生布尔值的函数作为参数的方法。该find
方法返回集合中满足条件的第一项。它将项目作为 an 返回,Option
因此如果没有令人满意的项目,则结果将为None
。的getOrElse
方法Option
如果有则返回找到的结果,如果没有则返回-1
。
但是,您不应该使用“错误代码”,例如在 Scala 编程中返回 -1。他们是不好的做法。相反,您应该抛出异常或返回一个Option[Int]
这样的返回None
值表示未找到任何值。正确的方法是这样的:
def my_function(condition: Int => Boolean): Option[Int] = {
(0 to 10).find(condition)
}
println(my_function(_ > 5)) // Some(6)
println(my_function(_ > 11)) // None