内容:
1. 高阶函数的定义;
2. map函数的使用方法;
3. foreach函数的使用方法;
4.filter函数的使用方法;
一,什么是高阶函数
高阶函数:是一种特殊的函数,特殊之处在于:它指使用其他函数作为参数或者返回值。
Scala的常见高阶函数包括map、flatten、flatmap、foreach、reduce、filter和fold等。
二,map函数的使用方法
map函数
任务:把数组(1,2,3,4,5) → (2,4,6,8,10)
作用:通过对数组的每一个元素应用一个函数来构建一个新数组。
语法: 新数组 = 旧数组.map(旧元素=>新元素)
代码如下:
object xy28 {
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)
val arr2 = arr1.map(x => x*2)
//for循环来输出数组中的每个元素
for (i <- arr2){
println(i)
}
}
}
练习题: 代码如下:
object xy29 {
/*
map 在练习题
*/
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 xy30 {
/*
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 <- arr4){
//print(s"${i}")
}
}
四,filter函数的使用方法
任务:在数组中找出元素是偶数的,并组成新数组。(1,2,3,4,5) → (2,4)
作用:对数组元素使用函数进行过滤。
语法:新数组= 旧数组.filter(元素=>bool) 它的参数是一个函数,这函数的返回值是布尔值。如果返回为true就保留。
object xy31 {
/*
*filter
* 过滤器
* filter(函数)
* 如果返回值为true,则元素就保留下来
*
*/
def main(args: Array[String]): Unit = {
// 把数据为偶数的留下来
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的分数
var score1 = score.filter(y => y > 80)
score1.foreach(println)
}
}