[JAVA] Was ist ein Lambda-Ausdruck?

Was ist ein Lambda-Ausdruck?

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

Was ist ein Lambda-Ausdruck?
Was ist ein Lambda-Ausdruck (Java)
Was ist ein Konstruktor?
Was ist ein Stream?
Was ist ein Servlet?
Was ist eine Wrapper-Klasse?
Was ist ein boolescher Typ?
Was ist ein Ruby-Modul?
Was ist ein Gleitkomma?
Was ist ein aussagekräftiger Kommentar?
Was ist eine Java-Sammlung?
Was ist Fat⁉ enum?
Was ist ein Ausschnitt in der Programmierung?
Was ist ein Boolescher Spaltentyp?
Was ist eine Referenztypvariable?
Was ist ein zweidimensionales Ruby-Array?
Was ist Cubby?
Was ist eine Klasse in der Java-Sprache (3 /?)
Was ist ein Terminal? -Absoluter Pfad & relativer Pfad-
Was ist eine Spring Boot-Originaldatei?
Was ist java
Was ist Maven?
Was ist Jackson?
[Für Programmieranfänger] Was ist eine Methode?
Was ist Selbst
Was ist Jenkins?
Was ist ArgumentMatcher?
Was ist IM-Jonglieren?
Was ist eine Klasse in der Java-Sprache (1 /?)
Was ist params
Was ist SLF4J?
Was ist eine Klasse in der Java-Sprache (2 /?)
Was ist Fassade? ??
Was ist Java <>?
Was ist Gradle?
Was ist POJO?
Was ist java
Was ist centOS?
[Java] Lambda-Ausdruck
Was ist RubyGem?
[Rails] Was ist ein Punkt (.) Oder ein Doppelpunkt (:)?
Was ist before_action?
Was ist Docker?
Was ist Byte?
Java Lambda Ausdruck
Was ist Tomcat?
Verwandeln Sie sich von einer normalen Klasse in einen Lambda-Stil
Welches ist schneller, Methodenreferenz oder Lambda-Ausdruck
Was ist Maven Assembly?
Was ist Docker-Compose?
Was ist vue cli
Was ist eine Schnittstelle?
Java Neutral Lambda Tabellenausdruck 1
Was ist Rubys Selbst?
Was ist harte Codierung?
Variationen von Java-Lambda-Ausdrücken