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