Je ne pouvais pas comprendre l'expression lambda, donc je l'ai simplifiée et compris le résultat.
Tout d'abord, un extrait de Wikipedia sur les fonctions anonymes.
Fonction anonyme (anglais: fonction anonyme ou fonction sans nom) [1] dans un langage de programmation est une fonction définie sans nom.
Il existe différentes méthodes pour exprimer des fonctions anonymes, mais ces dernières années [2] le courant dominant est la notation d'expression lambda.
(Wikipédia (fonction https://ja.wikipedia.org/wiki/anonymous))
En d'autres termes, une expression lambda est un moyen de représenter une fonction anonyme. ("->" Un tel gars) → Une expression lambda est une fonction définie sans être nommée.
Au fait, lors de l'écriture en Java, cela ressemble à ceci. (Extrait de la fonction anonyme de Wikipédia.)
sample.java
import java.util.function.*;
...
BiFunction<Integer, Integer, Integer> add = (x, y) -> x + y;
System.out.println(add.apply(2, 3));
↑ Pour expliquer avec cet exemple
"(X, y)" représente l'argument d'une fonction sans nom.
"X + y" représente le traitement de la fonction. (Bien qu'il soit omis dans cet exemple, il peut être exprimé par "{return x + y}". Je pense que c'est plus convivial pour les méthodes et plus facile à comprendre.)
Qu'utilisez-vous en premier lieu les fonctions anonymes? C'est pourquoi l'interface fonctionnelle sort. En gros, c'est une interface à laquelle des fonctions (voir expressions et méthodes lambda) peuvent être affectées.
Par exemple, l'interface BiFunction <T, U, R>
Paramètres de type: T --Type du premier argument de la fonction U --Type du deuxième argument de la fonction R - Type de résultat de la fonction → Une interface qui vous permet d'affecter une fonction qui renvoie une valeur de retour avec deux arguments.
En d'autres termes, si vous affectez la fonction anonyme de l'exemple précédent à cette interface et appelez la méthode (apply) définie dans cette interface, le traitement de la fonction anonyme sera appelé. ↓ Quant au résultat de ceci, le résultat 2 + 3 est sorti en standard car 2 et 3 sont passés comme arguments à appliquer.
sample2.java
BiFunction<Integer, Integer, Integer> add = (x, y) -> {return x + y;};
System.out.println(add.apply(2, 3));
Je n'ai pas encore pensé à attribuer des fonctions à des variables en Java, donc je pense que c'est difficile à comprendre. Cela semble être un concept qui apparaît tout naturellement lors de la lecture d'un livre JavaScript.
Recommended Posts