-> <- 运算符做什么?
2022-08-31 13:22:22
我最近遇到了以下代码:
IntPredicate neg = x -> x <- x;
这是什么,某种反向双λ?
我最近遇到了以下代码:
IntPredicate neg = x -> x <- x;
这是什么,某种反向双λ?
没有操作员。第一个只是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);