Ein Konzept, das aus einer funktionalen Sprache abgeleitet ist. Eine funktionale Sprache ist eine Sprache, die "Funktionen wie Werte behandelt".
Ein "Wert" ist eine Zahl, eine Zeichenfolge oder eine Liste. Um es wie einen Wert behandeln zu können
Das ist.
Eine Funktion, die einen Wert als Argument verwendet, 10 hinzufügt und zurückgibt.
F(x) = x + 10
Funktionen wie. In einer funktionalen Sprache kann diese Funktion als Wert behandelt werden.
Wie ordnen Sie die obige Funktion einer Variablen zu? Dieses "Schreiben einer Funktion, die als Wert behandelt werden kann" ist ein Lambda-Ausdruck.
Zum Beispiel in der Funktionssprache Haskell die obige Funktion
f = x -> x + 10
Es kann so beschrieben werden.
Stellen Sie sich das als "[eine Funktion, die die Zahl x empfängt und den durch Hinzufügen von 10 erhaltenen Wert zurückgibt] zu einer Variablen namens f vor."
Dieser Schreibstil variiert je nach Sprache, aber alle sind Lambda-Ausdrücke. Alle definieren "wie man eine Funktion schreibt, die als Wert behandelt werden kann". Es spielt keine Rolle, um welche Details es sich handelt, z. B.-> oder =>.
Bisher ist die Geschichte Lambda, aber in Java und C # ist die Situation etwas anders.
Da es sich um klassenbasierte Sprachen handelt, können Funktionen nur innerhalb von Klassen vorhanden sein, dh in Form von Methoden.
Daher habe ich eine Funktionsschnittstelle (Func in C #) erstellt, damit sie als Pseudofunktion behandelt werden kann.
Zum Beispiel in Java
Function<Integer, Integer>f = new Funciton<>(){
public Integer apply(Integer x){
return x + 10;
}
}
Es ist nur eine Abkürzung für.
Da es sich nur um eine Instanz handelt, kann sie einer Variablen zugewiesen und als Argument oder Rückgabeziel verwendet werden.
Das Obige ist die Erklärung des Lambda-Ausdrucks.
―― "Was ist der Lambda-Stil überhaupt?" ―― "Wie kann man einen Lambda-Ausdruck (ein aus einer funktionalen Sprache abgeleitetes Konzept) in eine objektorientierte Sprache integrieren?"
Wenn Sie verwirrt sind, können Sie den Unterschied nicht sofort erkennen. Es ist daher besser, diese beiden getrennt zu betrachten.
Recommended Posts