一、高阶函数
一种特殊的函数,特殊之处在于:它指使用其他函数作为参数或者返回值。
Scala的常见高阶函数包括Array.map、flatten、flatmap、foreach、reduce、filter和fold等。
object Base53 {
def main(args: Array[String]): Unit = {
val arr = Array(1,2,3,4,5)
val fn = (x:Int) => x*2
val arr1 = arr.map(fn)
for(i<-arr1){
println(i)
}
}
}
object Base53 {
def main(args: Array[String]): Unit = {
// val arr = Array(1,2,3,4,5) fn是一个字面量函数
// val fn = (x:Int) => x*2 map是一个高阶函数,因为它的参数类型是函数!
// 没有必要去单独定义一个函数fn,这里直接写在map函数中,此时它就是一个匿名函数
val arr = Array(1,2,3,4,5)
val arr1 = arr.map(x=>x*2)
for(i <- arr1){
println(i)
}
}
}
object Base54 {
def main(args: Array[String]): Unit = {
// val arr = Array(1,2,3,4,5)
// val fn = (x:Int) => x*2
val arr = Array(-1,2,-3,-4,5)
val arr1 = arr.map(x => x * x)
for(i <- arr1){
println(i)
}
}
}
object Base55 {
def main(args: Array[String]): Unit = {
// val arr = Array(1,2,3,4,5)
// val fn = (x:Int) => x*2
val arr = Array(-1,2,-3,-4,5)
val arr1 = arr.map(x => if(x>0) x else -x)
for(i <- arr1){
println(i)
}
}
}
foreach:依次使用当前函数来处理数组中的每一个元素
object Base56 {
def main(args: Array[String]): Unit = {
val arr = Array(-1,2,-3,-4,5)
arr.foreach(println)
}
}
filter(函数fn),如果fn的返回值是true,就保留这个元素
object Base56 {
def main(args: Array[String]): Unit = {
val arr = Array(1,2,3,4,5)
val arr1 = arr.filter(x=>x%2==0)
arr.foreach(println)
}
}
reduce:聚合
object Base57 {
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 Base58 {
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 = arr2.sorted// 对于字符类型的数据,按照字母表的顺序排
arr3.foreach(println)}
}