一、什么是高阶函数
高阶函数:是一种特殊的函数,特殊之处在于:它指使用其他函数作为参数或者返回值。
Scala的常见高阶函数包括Array.map、flatten、flatmap、foreach、reduce、filter和fold等。
二、map函数
语法: 新数组 = 旧数组.map(旧元素=>新元素)
把数组(1,2,3,4) → (2,4,6,8)
def main(args: Array[String]): Unit = {
// 定义一个元组
val arr =Array(1,2,3,4)
// 提问:把arr中每个元素都变成自己的2倍,并返回一个新数组?
val fn =(x:Int) => x*2
// Array表示数组,map就是它的方法
// map就是一个高阶函数,它的参数是一个函数!
val arr1=arr.map(fn)
for (i<- arr1){
println(i)
}
}
}
把(1,2,3,4,5) → (1,4,9,16,25)
def main(args: Array[String]): Unit = {
// 定义一个元组
val arr =Array(1,2,3,4,5)
// 提问:把arr中每个元素都变成自己的2倍,并返回一个新数组?
//val fn =(x:Int) => x*2
// Array表示数组,map就是它的方法
// map就是一个高阶函数,它的参数是一个函数!
val arr1=arr.map(x=>x*x)
for (i<- arr1){
println(i)
}
}
}
把(-1,2,-3,-4) → (1,2,3,4)
def main(args: Array[String]): Unit = {
// 定义一个元组
val arr =Array(-1,2,-3,-4)
// 提问:把arr中每个元素都变成自己的2倍,并返回一个新数组?
//val fn =(x:Int) => x*2
// Array表示数组,map就是它的方法
// map就是一个高阶函数,它的参数是一个函数!
val arr1=arr.map(x=> if (x>=0) x else -x)
for (i<- arr1){
println(i)
}
}
}
三、foreach函数
语法:数组.foreach(元素=>{})
打印数组中的元素
def main(args: Array[String]): Unit = {
// 定义一个数组
val arr=Array(-1,2,-3,-4,5)
// 依次打印每个元素
arr.foreach(println)
}
四、filter函数
语法:新数组= 旧数组.filter(元素=>bool)
它的参数是一个函数,这函数的返回值是布尔值。如果返回为true就保留。
在数组中找出元素是偶数的,并组成新数组。(1,2,3,4,5) → (2,4)
def main(args: Array[String]): Unit = {
// 定义一个数组
val arr=Array(1,2,3,4,5)
// 只保留arr中的偶数,并存放在一个新的数组中
// filter的参数是一个函数
// 如果这个函数返回true,则当前的元素会保留下来
var arr1=arr.filter(x => x%2==0)
arr1.foreach(println)
}
去掉不及格的分数:(60,59,80,70) → (60,80,70)
def main(args: Array[String]): Unit = {
// 定义一个数组
val arr=Array(60,59,80,70)
// 只保留arr中的偶数,并存放在一个新的数组中
// filter的参数是一个函数
// 如果这个函数返回true,则当前的元素会保留下来
var arr1=arr.filter(x => x>=60)
arr1.foreach(println)
}