在 Scala 中如何使用将函数作为参数的方法?

How do you use a method that takes a function as parameter in Scala?

val list = List.range(0, 10)

def filter (lst: List[Int], fn: (Int) => Boolean): List[Int] = {
  var res:List[Int] = Nil
  lst.foreach ((x:Int) => if (fn(x)) res = x::res)
  return res.reverse
}

方法filter有两个参数,第一个是一个列表,第二个是一个产生布尔参数的函数。

我想用这个方法只得到 list 中的偶数。

这只需要一个简单的 lambda 函数:

filter(list, _ % 2 == 0)

这相当于

filter(list, x => x % 2 == 0)

def isEven(x: Int) = x % 2 == 0

filter(list, isEven)