"Apache Spark : qu'est-Ce que la carte(_._2) abréviation pour?
J'ai lu un projet de code source, trouvé:
val sampleMBR = inputMBR.map(_._2).sample
inputMBR
est un n-uplet.
la fonction map
définition est :
map[U classTag](f:T=>U):RDD[U]
il semble que map(_._2)
est le raccourci pour map(x => (x._2))
.
Quelqu'un peut me dire les règles de ces sténo ?
OriginalL'auteur chenzhongpu | 2015-03-25
Vous devez vous connecter pour publier un commentaire.
_ Syntaxe peut être un peu déroutant. Lors de l' _ est utilisé seul, il représente un argument dans la fonction anonyme. Donc, si nous travaillons sur des paires:
map(_._2 + _._2)
serait un raccourci pourmap(x, y => x._2 + y._2)
. Lors de l' _ est utilisé comme partie d'un nom de fonction (ou la valeur), il n'a pas de signification particulière. Dans ce casx._2
renvoie le second élément d'un tuple (en supposant que x est un n-uplet).OriginalL'auteur Holden
collection.map(_._2) émet un deuxième élément du tuple. Exemple de pure Scala (Étincelle RDDs fonctionnent de la même manière):
OriginalL'auteur marekinfo
Deux caractères de soulignement dans '
_._2
' sont différents.D'abord "
_
' est pour espace réservé de fonction anonyme; le Second '_2
' est membre de la classe de cas deTuple
.Quelque chose comme:
OriginalL'auteur 卢声远 Shengyuan Lu
J'ai trouvé les solutions.
D'abord le
underscore
ici est que espace réservé.Voir plus sur
underscore
en Scala à Quelles sont toutes les utilisations d'un trait de soulignement à la Scala?.OriginalL'auteur chenzhongpu
La première"_", se référant ce qui est mappé et puisque ce qui est mappé à un tuple vous pouvez appeler n'importe quelle fonction au sein de la n-uplet et celui de la méthode est " _2 " donc ce que ci-dessous nous indique transformer entrée dans sa deuxième attribut.
OriginalL'auteur Nihat Hosgur