Ich habe den Quellcode eines Projekts gelesen, gefunden:
%Vor% inputMBR
ist ein Tupel.
Die Definition der Funktion map
lautet:
es scheint, dass map(_._2)
die Abkürzung für map(x => (x._2))
ist.
Jeder kann mir Regeln dieser Kurzschrift sagen?
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).
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) {...}
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? .
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.
Tags und Links scala apache-spark