强调了地图功能斯卡拉
问题描述:
关于地图功能使用下划线的一个快速的问题,假设我有以下RDD:强调了地图功能斯卡拉
val R_1 = sc.parallelize(List((1, 2), (3, 4), (5, 6)))
R_1.map(x => x._1 + x._2)
结果是(3,7,11)
我得到了一个错误,当我使用 R_1.map(_._1 + _._2)
来做到这一点。
我真的不明白斯卡拉lambda表达式中的下划线魔法。所以我的问题是R_1.map(x => x._1 + x._2)
和R_1.map(_._1 + _._2)
之间的区别。有没有其他写作方式R_1.map(x => x._1 + x._2)
? 任何帮助表示赞赏。
答
每个连续的下划线意味着匿名函数的另一个参数。所以,{ _._1 + _._2 }
对应于(a,b) => a._1 + b._2
。
是的,还有另外一种方法,使用模式匹配:
R_1.map { case (x,y) => x + y }