一尘不染

-> <-运算符的作用是什么?

java

我最近遇到了以下代码:

IntPredicate neg = x -> x <- x;

这是什么,某种反向双λ?


阅读 451

收藏
2020-12-03

共1个答案

一尘不染

没有-> <-操作员。第一个->只是Java 8中引入的lambda语法,第二个<-是误导性的“小于” <和“一元减”的串联-

您可以将其读取为IntPredicate neg = (x) -> (x <(-x));,即它会测试是否x小于-x,所有(很好,大多数)负数就是这种情况,因此命名为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

仅出于完整性考虑:此测试不仅(有意地?)难以理解,而且-如评论中所指出-
也因Integer.MIN_VALUE(而==-Integer.MIN_VALUE)失败。相反,您可能应该只使用简单得多的IntPredicate neg = x -> (x < 0);

2020-12-03