高阶函数:是一种特殊的函数,特殊在于它指使用其他函数作为参数或返回值
object Base54 {
/**
* 数组
* @param args
*/
def main(args: Array[String]): Unit = {
val arr = Array(1,2,3,4,5)
val fn = (x:Int) => x*2//fn是一个字面量函数
val arr1 = arr.map(fn)//map是一个高阶函数,因为他的参数类型是函数!
//用for循环输出
for(i <- arr ) {
println(i)
}
}
}
(-1,2,-3,-4)---->(1,2,3,4)
object Base54 {
/**
* 数组
* @param args
*/
def main(args: Array[String]): Unit = {
val arr = Array(-1,2,-3,-4)
// val fn = (x:Int) => x*2//fn是一个字面量函数
// val arr1 = arr.map(fn)//map是一个高阶函数,因为他的参数类型是函数!
val arr1 = arr.map(x => if(x>0) x else -x)
//用for循环输出
for(i <- arr ) {
println(i)
}
}
}
foreach函数
object Base54 {
/**
* 数组
* @param args
*/
def main(args: Array[String]): Unit = {
val arr = Array(-1,2,-3,-4,5)
// arr.foreach(x => {println(x)})
arr.foreach(println)
}
}
取偶数
object Base54 {
/**
* 数组
* @param args
* 1 把数组中的偶数保留下来,组成新数组
* filter : 过滤
* filter(函数fn),如果fn的返回值是true,就保留这个元素
*/
def main(args: Array[String]): Unit = {
val arr = Array(1,2,3,4,5)
// x%2 == 0 用来判断是否为偶数
val arr1 = arr.filter(x => x%2 == 0)
//打印新数组
arr.foreach(println)
}
}
保留及格的分数
object Base54 {
/**
* 数组
* @param args
* 1 把数组中的偶数保留下来,组成新数组
* filter : 过滤
* filter(函数fn),如果fn的返回值是true,就保留这个元素
*/
def main(args: Array[String]): Unit = {
val arr = Array(60,58,70,80).filter(x => x >= 60)
// x%2 == 0 用来判断是否为偶数
// val arr1 = arr.filter(x => x%2 == 0)
//打印新数组
arr.foreach(println)
}
}
flatten 不要加()的函数
object Base54 {
/**
* 二维数组
* flatten 不要加()的函数
*/
def main(args: Array[String]): Unit = {
var arr1 = Array( Array(1,2,3),Array(4,5,6));
// arr1(0).foreach(println)
println(arr1(0)(0))
val arr2 = arr1.flatten
arr2.foreach(println)
}
}
reduce: 聚合
object Base55 {
/**
* reduce: 聚合
*/
def main(args: Array[String]): Unit = {
var arr = Array( 1,2,3,4,5)
var sum = arr.reduce((x,y) => x + y)
println(sum)
}
}
object Base55 {
/**
* reduce: 聚合
*/
def main(args: Array[String]): Unit = {
var arr = Array(-1,20,30,14)
//求最大值
var max = arr.reduce((x,y) => if (x > y) x else y)
println(max)
//求最小值
val min = arr.reduce((x,y) => if (x < y) x else y)
println(min)
}
}
fold:带初值的reduce
object Base55 {
/**
* fold:带初值的reduce
*/
def main(args: Array[String]): Unit = {
var arr = Array(1,2,3)
//求和
// var sum = arr.reduce((x,y) => x + y)
var sum1 = arr.fold(100)((x,y)=>x+y)//106
println(sum1)
}
}
object Base56 {
/**
* fold:带初值的reduce
*/
def main(args: Array[String]): Unit = {
var arr = Array(-1,20,3,2,50)
//排序
var arr1 = arr.sorted//对于数组类型的数据,从小到大升序排列
var arr2 = Array("banana","zip","b","a","apple")
//排序
var arr3 = arr.sorted//对于字符类型的数据,按照字母表的顺序排列
arr3.foreach(println)
}
}