我最近发现了以下代码:
IntPredicate neg = x -> x <- x;
这是什么,某种反向双 lambda?
没有-> <-
操作员。那第一->
只是 Java 8 中引入的 lambda 语法,而第二个<-
是“小于”的误导性串联<
和“一元减”-
.
你可以将其读作IntPredicate neg = (x) -> (x < (-x));
,即它测试是否x
小于-x
,对于所有人来说都是如此(嗯,most https://stackoverflow.com/questions/24938333/what-does-the-operator-do/24938462#comment38754811_24938462) 负数,因此得名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);
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)