scala的高阶函数(算子)
scala简介
1.Scala是一门多范式的静态类型编程语言,Scala支持【面向对象】和【函数式编程】
2.Scala源代码(.scala)会被编译成java字节码(.class),然后运行在JVM之上,并可以调用现有的Java类库,实现两种语言的无缝对接
Scala匿名函数
知识补充:
1.不需要写def 函数名
2.不需要写返回类型,使用类型推导
3.= 变成 =>
4. 如果有多行则使用{}包括,否则建议省略
//普通的函数
def test1(v1:Int,v2:Int):Int = {
v1+v2
}
//匿名函数
(v1:Int,v2:Int) => v1+v2
//在scala中函数也是一个值,所以可以使用变量存储匿名函数
val f1 = (v1:Int,v2:Int) => v1+v2
f1(10,20) //输出结果:30
scala自带高阶函数
概述:可以接收一个函数的函数就是高阶函数
1.map
介绍:将集合中的每一个元素通过指定功能(函数)映射(转换)成新的结果集
需求:请将List(1,2,3)中的所有元素都*2,将结果放到一个新的集合中返回,即返回一个新的List(2,4,6)
①. 传统做法:遍历list集合,获取每一个元素*2,放入新的集合中
val list1 = List(1,2,3)
var list2 = List[Int]()
for (elem <- list1) {
list2 = list2 :+ elem*2
}
println(list2) //List(2, 4, 6)
传统写法总结:优点是比较直接、好理解
缺点是不够简洁、高效,没有体现函数式编程特点
②. 使用map函数
val list1 = List(1,2,3)
val list2 = list1.map(v=>v*2)
println(list2) //List(2, 4, 6)
③. 模拟实现map函数
class MyList {
var list1 = List(1,2,3)
var list2 = List[Int]()
def map(f:Int