[英]What does the -> <- operator do?
我最近发现了以下代码:
IntPredicate neg = x -> x <- x;
这是什么,某种反向双lambda?
没有-> <-
运算符。 第一个->
只是lambda语法,如Java 8中所介绍的那样,第二个<-
是'小于' <
和'一元减'的误导性连接-
。
您可以将其读作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);
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.