-> <- 运算符做什么?

2022-08-31 13:22:22

我最近遇到了以下代码:

IntPredicate neg = x -> x <- x;

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


答案 1

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

你可以把它读作,即它测试是否小于 ,这是所有(好吧,大多数)负数的情况,因此得名 。IntPredicate neg = (x) -> (x < (-x));x-xneg

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_VALUEIntPredicate neg = x -> (x < 0);


答案 2