(一)什么是高阶函数
高阶函数:是一个特殊的函数,特殊之处在于:它指使用其他函数作为参数或者返回值。
object Test14 {
def main(args: Array[String]): Unit = {
//高阶函数
var f = (x:Int) => {
val fn = (y:Int) => x * y
fn
}
val rs = f(10)
println(rs(20))
}
}
(二)map函数
map(映射)
def main(args: Array[String]): Unit = {
//定义一个数组 Array
val arr1 = Array(1,2,3,4,5,6)
//输出5
println(arr1(4))
//2.map函数 映射 给我一个值,我给你变成另一个值 y = x * 2
//map函数需要一个额外的函数作为参数,所以它是一个高阶函数
val arr2 = arr1.map(x => x * 2)
for (i <- arr2) {
println(i)
}
}
(三)foreach函数
def main(args: Array[String]): Unit = {
//foreach 对数组的每一个元素都去执行一次函数
// 它与map的区别在于:没有返回值!!
// var fn = (x:Int) => {
// println(s"$x ----- ")
// }
//Array(-1,2,-3,-4).foreach(fn)
Array(-1,2,-3,-4).foreach(println)
}
(四)filter函数
def main(args: Array[String]): Unit = {
//filter 过滤:对每一个元素执行函数,如果返回true,就把该元素留下。返回一个新的数组
//Array(1,2,3,4,5) --只要偶数-> Array(2,4)
//var re = Array(1,2,3,4,5).filter(x => if(x%2==0) true else false)
var re = Array(1,2,3,4,5).filter(x => x%2==0)
re.foreach(println)
}
(五)flatten函数
object Testflatten {
def main(args: Array[String]): Unit = {
//二维数组
//var arr1 = Array(30,40,50)
//println(arr1(0))
//二维数组:3个同学,3门课的成绩
var arr1 = Array(
Array(11,52,83),
Array(12,62,93),
Array(13,72,3),
)
//打印52
println(arr1(0)(1))
//打印93
//println(arr1(1)(2))
println(arr1.flatten.sum)
}
}