在 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 接受 2 个参数,第一个是列表,第二个是生成布尔参数的函数

我想使用这种方法只从 list获取偶数。

解决方法

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

filter(list,_ % 2 == 0)

这相当于

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

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

filter(list,isEven)