73 votes

En quoi consiste le-> <-opérateur ?

Je suis tombé récemment sur le code suivant :

Qu’est-ce, une sorte de marche arrière double lambda ?

90voto

tobias_k Points 13121

Il n'y a pas d' -> <- de l'opérateur. Ce premier -> est juste lambda syntaxe, tel qu'introduit dans Java 8, et que le deuxième <- est illusoire de concaténation de "plus petit que' < et "unaire moins' -.

Vous pouvez le lire en tant que IntPredicate neg = (x) -> (x < (-x));, c'est à dire qu'il vérifie s' x est plus petit que -x, ce qui est le cas pour tous (enfin, la plupart) les nombres négatifs, d'où le nom de l' neg.

IntPredicate neg = x -> x <- x;
System.out.println(neg.test(4));   // false
System.out.println(neg.test(0));   // false
System.out.println(neg.test(-4));  // true

Juste pour être complet: Ce test n'est pas seulement (intentionnellement?) difficile à comprendre, mais-comme l'a souligné dans les commentaires -- il échoue également pour Integer.MIN_VALUE (ce qui est ==-Integer.MIN_VALUE). Au lieu de cela, vous devriez probablement utiliser simplement le plus simple IntPredicate neg = x -> (x < 0);.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X