2014-07-24 45 views

cevap

88

-> <- işleci yok. İlk ->, Java 8'de tanıtıldığı gibi sadece lambda sözdizimi ve ikinci <-, '<'dan küçük ve' unary eksi '-'un yanıltıcı bir birleşimidir.

Bunu x tüm (iyi, most) negatif sayılar için durum, dolayısıyla adı neg olan -x daha küçük olup olmadığını test eder, yani IntPredicate neg = (x) -> (x < (-x)); olarak okuyabilir. Sadece şeyiyle

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 

: Bu test değil sadece (kasten?) Anlamak zor ama - Açıklamalarda belirttiği gibi - aynı zamanda ( ==-Integer.MIN_VALUE olan) Integer.MIN_VALUE için başarısız olur. Bunun yerine, muhtemelen çok daha basit olan IntPredicate neg = x -> (x < 0);'u kullanmalısınız.

+17

"tüm negatif sayılar için geçerli olan" ... ... "Integer.MIN_VALUE"; – fredoverflow

+14

hariç. Gerçekten, basit bir x-0 ' –

+7

@MarkRotteveel ile neyin yanlış olduğunu merak edersiniz. ASCII sanatı, sadece okunabilir. – Gimby

İlgili konular