Scala—高阶函数(2)

35 阅读1分钟

一、foreach函数

作用: 对数组的每一个元素应用函数。

语法: 数组.foreach(元素=>{})

代码:

arr2.foreach(println)

二、filter函数

作用: 对数组元素使用函数进行过滤。

语法: 新数组= 旧数组.filter(元素=>bool)  它的参数是一个函数,这函数的返回值是布尔值。如果返回为true就保留。

  • filter
  • 过滤器。
  • filter(函数)
  • 如果函数的返回值为true,则元素就保留下来
// 把数值为偶数的留下来
val arr1 = Array(1,2,3,4,5)
// val arr2 = arr1.filter( x=> {
//    println(x)
//  x%2 == 0
// })

val arr2 = arr1.filter(x => x%2==0)
arr2.foreach(println)

var score = Array(90,98,60,49,100)
// 把小于80的分去掉,只保留大于80的分数
score.filter( x => x>80).foreach(println)

三、reduce函数

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

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

val arr = Array(1,2,3,4,5)
// 求数组元素的累加
val rst = arr.reduce((x,y) => x + y)

// val rst = arr.sum

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

四、reduceLift和reduceRight

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

  • reduce ==== reduceLeft 从左向右计算
  • reduceRight 从右向左计算
val arr = Array(1,2,3)
val rst = arr.reduceLeft( (x,y) => x - y)

val rst1 = Array(1,2,3,4).reduceRight( (x,y) => x - y)


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

运行结果:

屏幕截图 2025-10-27 153410.png

五、fold

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

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

  • flod:带初值的reduce
  val rst = Array(1,2,3).fold(10)((x,y)=>x+y)
  println(s"rst = ${rst}")   // 结果:16