版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
目录
1、函数的定义与使用
定义
函数==方法(见2.3)
字面量
函数也有函数字面量
函数式编程的实质:函数和整型一样,可以在不同的方法调用中操作,传递。
传入参数为value
函数值为counter
函数也有类型和值的概念。
但不是每个函数都需要给其命名(给函数值),因为用一次就不用了。
这时候就考虑使用匿名函数(Lambda表达式)
匿名函数
没有函数名称,可以直接放到方法的括号里面作为参数传入。
(参数) => 表达式
如果参数只有一个,圆括号可以省略
实例:
匿名函数可以赋值给函数类型的变量。
Int => Int 表示所声明的函数的类型
自动推断机制:不用写出函数的类型
_
一个下划线只能表示一个参数的一次出现
实例:
spark代码很喜欢使用_
2、高阶函数
定义
函数括号里的参数仍然是函数
3、针对容器的操作 (遍历、映射)
scala容器的标准遍历方法foreach
List:
Map:
中缀表示法
._1与._2:取元组或映射中的对象
x为map中的键值对映射;
case(k,v):(k,v)就是一个元组对象(结构)
tuple=(1,2,3) //自动认为tuple是元组结构
未简写
简写
map
对容器或集合中的元素进行一对一的映射
scala的容器或集合中都自带有map方法
map()括号中的语句为lambda函数
flatmap
4、过滤和规约
过滤
圈起来的部分为lambda表达式
规约
reduce
没有初始值
接受二元函数f为reduce的参数
规约实质
左规约与右规约:
fold
有初始值