高阶函数

32 阅读1分钟

2025-10-2713阅读1分钟

(1)reduce函数

作用:reduce 是一种集合操作,用于对集合中的元素进行聚合操作,返回一个单一的结果。它通过指定的二元操作(即取两个元素进行操作)对集合中的所有元素进行递归处理,并最终将其合并为一个值

案例:

1.语法:reduce 函数需要一个函数作为参数,这个函数接受两个相同类型的参数,并返回一个值。(代码如下:)
object basic35 {

  def main(args: Array[String]): Unit = {
    //定义一个数组
    val arr = Array(1,2,3,4,5)

    val rst = arr.reduce( (x,y) => x + y)
    println(s"rst = ${rst}")  //15
  }

}
2.eg:求最大值/求最小值
def main(args: Array[String]): Unit = {
    val arr = Array(-1,2,30,5)
    val rst = arr.reduce( (x,y) => if(x > y) x else y )
    val rst1 = arr.reduce( (x,y) => if(x < y) x else y )


    println(s"rst = ${rst}")
    println(s"rst1 = ${rst1}")

  }
2.2reduceLeft-reduceRight

reduceLeft是从集合的左侧开始聚合,与reduce等价; reduceRight是从集合的右边开始


object basic36 {

  def main(args: Array[String]): Unit = {
    //定义一个数组
    val arr = Array(1,2,3,4)
//   reduce ===== reduceLeft从左往右算
    val rst = arr.reduceLeft( (x,y) => x - y ) //-4

//    reduce ===== reduceRight从右往右算
val rst1 = arr.reduceRight( (x,y) => x - y ) //2

    println(s"rst = ${rst}")
    println(s"rst1 = ${rst1}")


  }

}

(2)flod函数

作用:fold 是一种集合操作(与reduce类似),用于对集合中的元素进行聚合操作,返回一个单一的结果,需要提供一个初始的“种子”值。

1.计算带初值的累积
object basic37 {

  def main(args: Array[String]): Unit = {
    //定义一个数组
    val arr = Array(1,2,3,4)

    //
    val rst = arr.fold(10)( (x,y) => x+y)

    println(s"rst = ${rst}")  //20

  }

}