高阶函数的学习(2)

37 阅读1分钟

reduce函数

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

语法: reduce 函数需要一个函数作为参数,这个函数接受两个相同类型的参数,并返回一个值。

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

}
求最大值和最小值
def main(args: Array[String]): Unit = {
  // 定义一个数组
  
  val arr = Array(-1,2,30,5)
  // 求最大值
  
  val rst_min = arr.reduce((x,y) => if(x > y) x else y )
  // 求最小值
  
  val rst_max = arr.reduce((x,y) => if(x < y) x else y )
  println(s"rst_min = ${rst_min}") // 30
  println(s"rst_max = ${rst_max}") // -1
}

reduceLeft-reduceRight函数

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

// 定义一个数组

val arr = Array(1,2,3,4)

// reduce ==== reduceLeft
// reduceLeft 从左往右计算 1-2=-1,-1-3=-4,-4-4=-8

val rst = arr.reduceLeft( (x,y) => x - y )

// reduceRight 从右往左计算 4-3=1,1-2=-1,-1-1=-2

val rst1 = arr.reduceRight( (x,y) => x - y )

println(s"rst = ${rst}") // -8
println(s"rst1 = ${rst1}") // -2

fold函数

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

语法数组.fold(初值)(函数)

// fold:与reduce类似,都是做聚合操作。但是,它有一个初始值

  def main(args: Array[String]): Unit = {
    // 定义一个数组
    
    val arr = Array(1,2,3,4)
    
    // 10 就是初始值 10+1=11,11+2=13,13+3=16,16+4=20
    
    
    val rst = arr.fold(10)((x,y) => x + y)

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