首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache-Spark : map(_._2)是什么的缩写?

Apache-Spark : map(_._2)是什么的缩写?
EN

Stack Overflow用户
提问于 2015-03-25 10:28:15
回答 5查看 23.5K关注 0票数 13

我阅读了一个项目的源代码,发现:

代码语言:javascript
复制
val sampleMBR = inputMBR.map(_._2).sample

inputMBR是一个元组。

函数map的定义是:

代码语言:javascript
复制
map[U classTag](f:T=>U):RDD[U]

看起来map(_._2)map(x => (x._2))的缩写。

谁能告诉我这些速记的规则?

EN

回答 5

Stack Overflow用户

发布于 2015-03-25 10:38:28

_语法可能有点混乱。当_单独使用时,它表示匿名函数中的一个参数。因此,如果我们处理成对:map(_._2 + _._2)将是map(x, y => x._2 + y._2)的简写。当_用作函数名(或值名)的一部分时,它没有特殊含义。在本例中,x._2返回元组的第二个元素(假设x是一个元组)。

票数 20
EN

Stack Overflow用户

发布于 2015-03-25 10:59:19

collection.map(_._2)发出元组的第二个组件。来自纯Scala的示例(Spark RDDs的工作方式相同):

代码语言:javascript
复制
scala> val zipped = (1 to 10).zip('a' to 'j')
zipped: scala.collection.immutable.IndexedSeq[(Int, Char)] = Vector((1,a), (2,b), (3,c), (4,d), (5,e), (6,f), (7,g), (8,h), (9,i), (10,j))

scala> val justLetters = zipped.map(_._2)
justLetters: scala.collection.immutable.IndexedSeq[Char] = Vector(a, b, c, d, e, f, g, h, i, j)
票数 16
EN

Stack Overflow用户

发布于 2015-03-25 13:42:03

_._2”中的两个下划线不同。

第一个'_‘是匿名函数的占位符;第二个'_2’是case类Tuple成员

类似于:

案例类Tuple3 (_1:T1,_2:T2,_3:T3) {...}

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29246440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档