高阶函数的定义
是一种特殊的函数,特殊之处在于:它指使用其他函数作为参数或者返回值。
常见高阶函数
Scala的常见高阶函数包括Array.map、flatten、flatmap、foreach、reduce、filter和fold等。
object z32 {
/*
*高阶函数:是一种特殊的函数,它的参数,或者返回值是函数
*
*map:映射。把一个元素改成另一个元素
*/
def main(args: Array[String]): Unit= {
// 定义一个数组
val arr = Array(1,2,3,4)
val fn = (x:Int) => x * 2
val arr1 = arr.map( fn )
for(i <- arr1){
println(i)
}
}
}
map函数
map函数:通过对数组的每一个元素应用一个函数来构建一个新数组。
语法: 新数组 = 旧数组.map(旧元素=>新元素)
object z33 {
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 )
val arr1 = arr.map( x => x * 2 )
for(i <- arr1){
println(i)
}
}
}
练习
把(-1,2,-3,-4) → (1,2,3,4)
object z34 {
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 (fn)
//val arr1 = arr.map ( x => x * x )
val arr1 = arr.map ( x => if (x >= 0) x else -x ) //x 的绝对值
for(i <- arr1) {
println(i)
}
}
}