Scala的匿名函数在map()上的简化

这篇博客介绍了Scala如何简化匿名函数的使用,特别是在Spark的map操作中。从详细定义函数到逐步简化,包括省略花括号、类型声明以及参数括号,展示了Scala语言的简洁性。示例中,通过匿名函数实现RDD数据乘以2的操作,演示了不同级别的函数简化形式。
摘要由CSDN通过智能技术生成

Scala的匿名函数简化

Scala的匿名函数可以简化得非常方便。下面以spark中的map()做例子。

//setMaster设置,local表示本地运行,[]内表示使用的核数,*表示全用,只有local的话表示单线程运算。
//setAppName设置App的名称
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Map Example")
val sc = new SparkContext(sparkConf)

rdd: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4))

//map操作

sc.stop()

以上是共通部分,假设我们有个让RDD内数据*2的需求。
下面是最详细的map方法。

map根据输入的函数,将List里面的数字迭代输入该函数中。

def mapFunction(num:Int): Int = {
	num * 2
}

val mapRDD: RDD[Int] = rdd.map(mapFunction)

当然,我们也可以使用匿名函数。

val mapRDD: RDD[Int] = rdd.map((num:Int) => { num * 2 })

当匿名函数内只有一行时,可以省略花括号。

val mapRDD: RDD[Int] = rdd.map((num:Int) => num * 2 )

当匿名函数的输入参数类型可以推断出来,那么类型可以省略。

val mapRDD: RDD[Int] = rdd.map((num) => num * 2 )

如果匿名函数内的参数只有一个时,小括号可以省略。

val mapRDD: RDD[Int] = rdd.map(num => num * 2 )

如果匿名函数的参数按照逻辑顺序出现且只出现一次时,可以使用下划线代替。

val mapRDD: RDD[Int] = rdd.map(_*2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值