2016-07-22 130 views
1

關於地圖功能使用下劃線的一個快速的問題,假設我有以下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)? 任何幫助表示讚賞。

回答

5

每個連續的下劃線意味着匿名函數的另一個參數。所以,{ _._1 + _._2 }對應於(a,b) => a._1 + b._2

是的,還有另外一種方法,使用模式匹配:

R_1.map { case (x,y) => x + y }