Scala apachespark:map(u.u 2)是什么的缩写?
我阅读了一个项目的源代码,发现:Scala apachespark:map(u.u 2)是什么的缩写?,scala,apache-spark,Scala,Apache Spark,我阅读了一个项目的源代码,发现: val sampleMBR = inputMBR.map(_._2).sample inputMBR是一个元组 函数map的定义是: map[U classTag](f:T=>U):RDD[U] 似乎map(u._2)是map(x=>(x._2))的缩写 谁能告诉我这些速记的规则?语法可能有点混乱。当u单独使用时,它表示匿名函数中的一个参数。因此,如果我们研究配对: map(u2+2)是map(x,y=>x.2+y.2)的简写。当u用作函数名(或值名)
val sampleMBR = inputMBR.map(_._2).sample
inputMBR
是一个元组
函数map
的定义是:
map[U classTag](f:T=>U):RDD[U]
似乎map(u._2)
是map(x=>(x._2))
的缩写
谁能告诉我这些速记的规则?语法可能有点混乱。当u单独使用时,它表示匿名函数中的一个参数。因此,如果我们研究配对:
map(u2+2)
是map(x,y=>x.2+y.2)
的简写。当u用作函数名(或值名)的一部分时,它没有特殊意义。在本例中,x.\u 2
返回元组的第二个元素(假设x是元组)。collection.map(\u.\u 2)发出元组的第二个组件。来自纯Scala的示例(Spark RDD的工作方式相同):
我找到了解决办法 首先,这里的
下划线作为占位符
为了使函数文字更加简洁,可以使用下划线
作为一个或多个参数的占位符,只要每个参数
在函数文本中仅显示一次
有关Scala中的下划线
的详细信息,请参见。在“\uu 2
”中的两个下划线不同
第一个“”
”表示匿名函数的占位符;第二个“\u2
”是case类元组的成员
比如:
案例类元组3(\u 1:T1,\u 2:T2,\u 3:T3)
{…}
第一个“u”是指映射到的对象,因为映射到的对象是元组,所以可以调用元组中的任何函数,其中一个方法是“2”,下面告诉我们如何将输入转换为它的第二个属性
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)