什么是高阶函数?
高阶函数:是一种特殊的函数,特殊之处在于:它指使用其他函数作为参数或者返回值。
Scala的常见高阶函数包括map、flatten、flatmap、foreach、reduce、filter和fold等。
map函数
作用:通过对数组的每一个元素应用一个函数来构建一个新数组。
语法: 新数组 = 旧数组.map(旧元素=>新元素)
把数组(1,2,3,4,5) → (2,4,6,8,10)
object I05 {
/**
* 高阶函数:一种特殊的函数,它的参数或者返回值为函数类型。
* 1.map 函数
*
*/
def main(args: Array[String]): Unit = {
val arr1 = Array(1,2,3,4,5,6)
// Array是一个数组,用来定义一个数组
// arr1 就是一个数组对象,它有很多的方法,其中就有map。
// for 循环来输出数组中每个元素
val fn = (x:Int) => x * 2
// fn是一个函数,它被传递给map。map是一个高阶函数
val arr2 = arr1.map(fn)
// for 循环来输出数组中每个元素
for(i <- arr2){
println(i)
}
}
}
map 的练习
1.把(1,2,3,4,5) → (1,4,9,16,25)
2.把(-1,2,-3,-4) → (1,2,3,4)
object I06 {
/**
* map 的练习
* 1.把(1,2,3,4,5) → (1,4,9,16,25)
* 2.把(-1,2,-3,-4) → (1,2,3,4)
*/
def main(args: Array[String]): Unit = {
val arr1 = Array(1, 2, 3, 4, 5)
val arr2 = arr1.map(x => x * x)
for (i <- arr2) {
print(s"$i ")
}
val arr3 = Array(-1, 2, -3, -4)
// 绝对值
val arr4 = arr3.map(x => if(x < 0) -x else x)
println()
for (i <- arr4) {
print(s"$i ")
}
}
}
foreach函数
作用:对数组的每一个元素应用函数。
语法:数组.foreach(元素=>{})
打印数组中的元素
object I07 {
/**
* foreach
* 是数组的每一个元素都执行一次 函数
* */
def main(args: Array[String]): Unit = {
val arr1 = Array(1,2,3,4,5)
// arr1.foreach( x => print(x) )
arr1.foreach(print)
arr1.foreach(println)
// for (i <- arr1){
// print(s"$i ")
// }
}
}
filter函数
作用:用于根据指定的条件过滤集合中的元素,保留满足条件的元素并返回一个新的集合。
语法:集合.filter(元素 => 条件判断)
练习:
1.把偶数过滤留下来。(1,2,3,4,5) → (2,4)
2.把小于80分的值去掉,只保留大于80分的分数
object J01 {
/**
* filter
* 过滤器
* filter(函数)
* 如果函数的返回值为true,则元素被保留下来
**/
def main(args: Array[String]): Unit = {
// 把偶数过滤留下来
val arr1 = Array(1,2,3,4,5,6)
// val arr2 = arr1.filter(x=> {
// // println(x)
// x%2 ==0
// })
val arr2 = arr1.filter(x => x%2==0)
arr2.foreach(println)
var score = Array(60,98,60,49,100)
//把小于80分的值去掉,只保留大于80分的分数
score.filter(x => x>80).foreach(println)
}
}