介绍
在 支持函数式的语言中(如:scala、python、js),一般有 map()函数,或类似功能的函数
作用:
会根据提供的函数对指定集合做映射
参数:
- 其中一个参数是集合
- 另一个参数是 lambda表达式,将集合中的每一个元素传给 lambda表达式,计算后返回结果,将结果组合成新集合
应用场景
在 大数据、人工智能中经常使用,对数据做处理
实现 map() 函数
def main(args: Array[String]): Unit = {
/*
* 定义map函数
* 第一个参数是数组
* 第二个参数是lambda表达式
*/
def map(arr:Array[Int],op:Int=>Int): Array[Int] = {
for(item <- arr) yield op(item) //将数组中每一个元素,传给lambda表达式运算,并调用yield返回
}
val arr=Array(1,2,3,100,200)
val res=map(arr, _ * 2)
println(res.mkString(","))
}
完整代码
package std
object Std33_map函数 {
def main(args: Array[String]): Unit = {
//完整写法
// def map(arr:Array[Int],op:(Int)=> Int) :Array[Int]={
// for(item <- arr) yield op(item)
// }
//只有一个形参,省略()
// def map(arr:Array[Int],op:Int=> Int) :Array[Int]={
// for(item <- arr) yield op(item)
// }
//函数体只有一句,省略{}
// def map(arr:Array[Int],op:Int=> Int) :Array[Int]=for(item <- arr) yield op(item)
//返回类型可推断出,略之
def map(arr:Array[Int],op:Int=> Int) = for(item <- arr) yield op(item)
val arr=Array(1,2,3,4,5)
//完整写法
// val res=map(arr,
//
// (a:Int)=> { //完整写法
// a * 2
// }
//
// )
// val res=map(arr,
// (a)=> { //类型可以推断出,所以省略
// a * 2
// }
//
// )
// val res=map(arr,
//
// a=> { //只有一个参数,()可省略
// a * 2
// }
//
// )
// val res=map(arr,
//
// a=> a * 2 //函数体只有一句,省略{}
//
// )
val res=map(arr,
_ * 2 //外部有省略的 lambda表达式
)
println(res.mkString(","))
}
}

