Ich konnte den Lambda-Ausdruck nicht verstehen, also habe ich ihn vereinfacht und das Ergebnis verstanden.
Zunächst ein Auszug aus Wikipedia über anonyme Funktionen.
Anonyme Funktion (Englisch: anonyme Funktion oder namenlose Funktion) [1] in einer Programmiersprache ist eine Funktion, die ohne Namen definiert ist.
Es gibt verschiedene Methoden, um anonyme Funktionen auszudrücken, aber in den letzten Jahren [2] ist der Mainstream die Lambda-Ausdrucksnotation.
(Wikipedia (https://ja.wikipedia.org/wiki/anonymous Funktion))
Mit anderen Worten, ein Lambda-Ausdruck ist eine Möglichkeit, eine anonyme Funktion darzustellen. ("->" So ein Typ) → Ein Lambda-Ausdruck ist eine Funktion, die ohne Namen definiert wird.
Übrigens sieht es beim Schreiben in Java so aus. (Auszug aus der anonymen Funktion von Wikipedia.)
sample.java
import java.util.function.*;
...
BiFunction<Integer, Integer, Integer> add = (x, y) -> x + y;
System.out.println(add.apply(2, 3));
↑ Mit diesem Beispiel erklären
"(X, y)" steht für das Argument einer unbenannten Funktion.
"X + y" steht für die Verarbeitung der Funktion. (Obwohl es in diesem Beispiel weggelassen wird, kann es als "{return x + y}" ausgedrückt werden. Ich denke, dies ist methodenfreundlicher und leichter zu verstehen.)
Was verwenden Sie überhaupt anonyme Funktionen? Deshalb kommt die funktionale Schnittstelle heraus. Grob gesagt ist es eine Schnittstelle, der Funktionen (siehe Lambda-Ausdrücke und -Methoden) zugewiesen werden können.
Zum Beispiel die Schnittstelle BiFunction <T, U, R>
Typparameter: T - Typ des ersten Funktionsarguments U - Typ des zweiten Funktionsarguments R - Funktionsergebnistyp → Eine Schnittstelle, über die Sie eine Funktion zuweisen können, die einen Rückgabewert mit zwei Argumenten zurückgibt.
Mit anderen Worten, wenn Sie dieser Schnittstelle die anonyme Funktion des vorherigen Beispiels zuweisen und die in dieser Schnittstelle definierte Methode (apply) aufrufen, wird die Verarbeitung der anonymen Funktion aufgerufen. ↓ Das Ergebnis wird standardmäßig mit 2 + 3 ausgegeben, da 2 und 3 als anzuwendende Argumente übergeben werden.
sample2.java
BiFunction<Integer, Integer, Integer> add = (x, y) -> {return x + y;};
System.out.println(add.apply(2, 3));
Ich habe bisher nicht darüber nachgedacht, Variablen in Java Funktionen zuzuweisen, daher denke ich, dass es schwer zu verstehen ist. Es scheint ein Konzept zu sein, das beim Lesen eines JavaScript-Buches ganz natürlich auftaucht.
Recommended Posts