Apache-Spark: Was ist map (_._ 2) Kurzschrift für?

7

Ich habe den Quellcode eines Projekts gelesen, gefunden:

%Vor%

inputMBR ist ein Tupel.

Die Definition der Funktion map lautet:

%Vor%

es scheint, dass map(_._2) die Abkürzung für map(x => (x._2)) ist.

Jeder kann mir Regeln dieser Kurzschrift sagen?

    
chenzhongpu 25.03.2015, 02:28
quelle

5 Antworten

11

Die _ Syntax kann ein wenig verwirrend sein. Wenn _ alleine verwendet wird, stellt es ein Argument in der anonymen Funktion dar. Also wenn wir an Paaren arbeiten: map(_._2 + _._2) wäre eine Abkürzung für map(x, y => x._2 + y._2) . Wenn _ als Teil eines Funktionsnamens (oder Wertnamens) verwendet wird, hat es keine besondere Bedeutung. In diesem Fall gibt x._2 das zweite Element eines Tupels zurück (unter der Annahme, dass x ein Tupel ist).

    
Holden 25.03.2015 02:38
quelle
6

collection.map (_._ 2) gibt eine zweite Komponente des Tupels aus. Beispiel aus reinem Scala (Spark RDDs funktionieren auf die gleiche Weise):

%Vor%     
marekinfo 25.03.2015 02:59
quelle
3

Zwei Unterstriche in ' _._2 ' sind unterschiedlich.

Zuerst ist ' _ ' für Platzhalter der anonymen Funktion; Das zweite ' _2 ' ist Mitglied der Fallklasse Tuple .

Etwas wie:

  

Fallklasse Tuple3 ( _1 : T1, _2 : T2, _3 : T3)   {...}

    
卢声远 Shengyuan Lu 25.03.2015 05:42
quelle
0

Ich habe die Lösungen gefunden.

Zuerst ist die underscore hier als Platzhalter .

  

Um ein Funktionsliteral noch prägnanter zu machen, können Sie Unterstriche verwenden   als Platzhalter für einen oder mehrere Parameter, solange jeder Parameter   erscheint nur einmal innerhalb des Funktionsliterals.

Weitere Informationen zu underscore in Scala finden Sie unter Was sind alle Verwendungen von Unterstrichen in Scala? .

    
chenzhongpu 25.03.2015 03:33
quelle
0

Das erste '_' verweist auf das, was zugeordnet ist, und da ein Tupel zugeordnet ist, können Sie jede Funktion innerhalb des Tupels aufrufen, und eine der Methoden ist '_2'. Nachstehend wird die Eingabe in die zweite umgewandelt Attribut.

    
Nihat Hosgur 05.04.2017 00:14
quelle

Tags und Links