目录
高阶函数
1、高阶函数的定义
定义:如果一个函数的传入参数为函数或者返回值是函数,则该函数即为高阶函数
一般高阶函数的类型有:
1、传入参数为函数
2、传入参数为匿名函数
3、传入参数为方法
4、传入参数为方法(方法自动转换成函数)
2、常见的高阶函数
-filter、foreach
-map、reduce
-flatMap、map、flatten
-paritition、groupby
-sorted
3、常见高阶函数的代码示例
3.1、filter函数
#1、格式
def filter(p: Int => Boolean): List[Int]
#2、功能:其实就是过滤掉false的输入参数,保留返回true的数
#3、展示如下:
3.2、foreach函数
#1、格式
foreach[U](f: Int => U): Unit
#2、功能:其实就是集合遍历
#3、展示如下:
3.3、map函数
#1、格式
def map[B](f: Int => B): scala.collection.TraversableOnce[B]
#2、功能:
a ) :map 是对每一个元素进行处理并返回一个新的集合,
b ) : 一对一映射 也就是对原来的集合中的每一个元素,执行某一项操作(该操作取决于函数的内容)比如flatMap中的map
#4、展示如下:
package com.scala.day02 object MapDemo { def main(args: Array[String]): Unit = { val arr= (1 to 10).toArray val result = arr.map(x=>{if(x%2==0) x*2 else 0}).filter(x=>x>0) result.foreach(x=>println(x)) } }
3.4 reduce函数
#1、格式
def reduce[A1 >: Int](op: (A1, A1) => A1): A1
#2、功能:以对集合当中的元素进行归约操作,sum操作中的foldLeft,sum实际上调用的就是foldLeft
#3、展示如下:
集合元素为元组:
简写:注意:下划线占位符,一次对应一个参数
3.5 flatMap函数
注意:
1、其实flatMap = map + flatten(flaten对输入元素要求是Array )
2、先执行map再执行flatten
#1、格式
def flatMap[B](f: String => scala.collection.GenTraversableOnce[B]): scala.collection.TraversableOnce[B]
#2、功能:对每个输入元素返回一个集合(注意:要求参数为函数,并且函数中的参数类型为String)
#3、展示如下:
3.6 flatten 函数
注意:
1、fatten对输入元素要求是Array
2、map函数说明:一对一映射 也就是对原来的集合中的每一个元素,执行某一项操作(该操作取决于函数的内容)
#1、格式:
def flatten[B](implicit asTraversable: Array[String] => scala.collection.GenTraversableOnce[B]): List[B]
#2、功能:就是将多个集合展开,组合成新的一个集合(可能不太准),也有的说是压平
#3、展示如下:
3.7、partition函数
注:
1、只有一个参数,可以省略参数定义,使用_代替
2、高阶函数中下划线_ 不能单独存在 没有意义
#1、格式 -- 对什么集合分区就返回什么集合,上面介绍的所有高阶函数的格式可能不对,最好去查源码
def partition(p: A => Boolean): (Repr, Repr)
#2、功能:对集合按条件分组
#3、展示如下: