[英]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.