Je suis tombé récemment sur le code suivant :
Qu’est-ce, une sorte de marche arrière double lambda ?
Je suis tombé récemment sur le code suivant :
Qu’est-ce, une sorte de marche arrière double lambda ?
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 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.