[JAVA] Qu'est-ce qu'une expression lambda?

Qu'est-ce qu'une expression lambda?

Un concept dérivé d'un langage fonctionnel. Un langage fonctionnel est un langage qui "traite les fonctions de la même manière que les valeurs".

Une «valeur» est un nombre, une chaîne ou une liste. Pouvoir le traiter comme une valeur

--Peut être affecté à une variable

C'est.

Par exemple, une fonction qui prend une valeur comme argument, y ajoute 10 et la renvoie.

F(x) = x + 10

Fonctions comme. Dans un langage fonctionnel, cette fonction peut être gérée comme une valeur.

Alors, comment attribuez-vous la fonction ci-dessus à une variable? Ce "comment écrire une fonction qui peut être gérée comme une valeur" est une expression lambda.

Par exemple, dans le langage fonctionnel Haskell, la fonction ci-dessus

 f = x -> x + 10

Cela peut être décrit comme ceci.

Pensez-y comme "[une fonction qui reçoit le nombre x et renvoie la valeur obtenue en ajoutant 10] à une variable appelée f."

Cette méthode d'écriture varie en fonction de la langue, mais toutes sont des expressions lambda. Tous définissent "comment écrire une fonction qui peut être manipulée comme une valeur". Peu importe s'il y a une petite différence dans le style d'écriture comme-> ou =>.

Jusqu'à présent, l'histoire est lambda, mais la situation est un peu différente en Java et C #.

Comme il s'agit de langages basés sur des classes, les fonctions ne peuvent exister qu'au sein de classes, c'est-à-dire sous la forme de méthodes.

J'ai donc créé une interface de fonction (Func en C #) pour qu'elle puisse être gérée comme une pseudo fonction.

Par exemple en Java

Function<Integer, Integer>f = new Funciton<>(){
    public Integer apply(Integer x){
        return x + 10;
    }
}

C'est juste une abréviation pour.

Puisqu'il ne s'agit que d'une instance, il peut être affecté à une variable et peut être utilisé à la fois comme argument et comme destination de retour.

Ce qui précède est l'explication de l'expression lambda.

―― "Quel est le style Lambda en premier lieu?" ―― "Comment intégrer une expression lambda (un concept dérivé d'un langage fonctionnel) dans un langage orienté objet?"

Si vous êtes confus, vous ne pourrez pas faire la différence à la fois, il est donc préférable de penser à ces deux séparément.

Recommended Posts

Qu'est-ce qu'une expression lambda?
Qu'est-ce qu'une expression lambda (Java)
Qu'est-ce qu'un constructeur
Qu'est-ce qu'un flux
Qu'est-ce qu'un servlet?
Qu'est-ce qu'une classe wrapper?
Qu'est-ce qu'un type booléen?
Qu'est-ce qu'un module Ruby?
Qu'est-ce qu'une virgule flottante?
Qu'est-ce qu'un commentaire significatif?
Qu'est-ce qu'une collection Java?
Qu'est-ce que Fat⁉ enum?
Qu'est-ce qu'un extrait de code en programmation?
Qu'est-ce qu'un type booléen de colonne?
Qu'est-ce qu'une variable de type référence?
Qu'est-ce qu'un tableau bidimensionnel Ruby?
Qu'est-ce que Cubby
Qu'est-ce qu'une classe en langage Java (3 /?)
Qu'est-ce qu'un terminal? -Chemin absolu et chemin relatif-
Qu'est-ce qu'un fichier .original Spring Boot?
Qu'est-ce que 'java
Qu'est-ce que maven?
Qu'est-ce que Jackson?
[Pour les débutants en programmation] Qu'est-ce qu'une méthode?
Qu'est-ce que soi
Qu'est-ce que Jenkins
Qu'est-ce que ArgumentMatcher?
Qu'est-ce que IM-Juggling?
Qu'est-ce qu'une classe en langage Java (1 /?)
Qu'est-ce que les paramètres
Qu'est-ce que SLF4J?
Qu'est-ce qu'une classe en langage Java (2 /?)
Qu'est-ce que la façade? ??
Qu'est-ce que Java <>?
Qu'est-ce que Gradle?
Qu'est-ce que POJO
Qu'est-ce que 'java
Qu'est-ce que centOS
[Java] Expression Lambda
Qu'est-ce que RubyGem?
[Rails] Qu'est-ce qu'un point (.) Ou un deux-points (:)?
Qu'est-ce que before_action?
Qu'est-ce que Docker
Qu'est-ce que Byte?
Expression lambda Java
Qu'est-ce que Tomcat
Transformer d'une classe normale en un style lambda
Qui est plus rapide, référence de méthode ou expression lambda
Qu'est-ce que l'assemblage Maven?
Qu'est-ce que `docker-compose up`?
Qu'est-ce que vue cli
Qu'est-ce qu'une interface
expression 1 de la table lambda neutre java
Qu'est-ce que le moi de Ruby?
Qu'est-ce que le codage en dur?
Variations d'expressions lambda Java