2008-10-22 6 views

cevap

433
theBoolean = !theBoolean; 
+11

Bu ... gerçekten açık - oops! Neden düşünmediğimi anlamıyorum. Teşekkürler. –

+26

Bir ++ bool operatörü için oyuyorum ++ i ve --i ;-)) – ypnos

+0

! Boolean doğal bir seçim gibi görünüyor - belki de gelecekte. –

138
theBoolean ^= true; 

Daha az tuş vuruşlarını değişken artık dört harf

daha uzunsa
+11

hakkında ve DRY :) – Tetha

+24

ile uyumludur, ancak xor'da olmayan tüm okuyucular için daha az açıktır ... –

+6

Brevity, aklın ruhu. –

0

önce:

boolean result = isresult(); 
if (result) { 
    result = false; 
} else { 
    result = true; 
} 

sonra:

boolean result = isresult(); 
result ^= true; 
+0

Kim oy kullanmış? Sebebini açıklayabilir misiniz lütfen? –

+9

Birinin neden sizi neden düşürdüğünü düşünmek için iki ana neden: 1) İplik çekirdeği (_come on! Soru soruldu 7 (!) Yıl önce! _) & Cevabınız masaya yeni bir şey getirmiyor; 2) Seçmen “temiz” bir şey bekledi (_read: shorter_) - AaronMaenpaa'nın cevabı bunun en iyi örneğidir. –

+0

@PriiduNeemre ve o seçmen siz değil misiniz? – Elltz

14

birkaç vardır

"bariz" yolu "kısa" bir şekilde (çoğu zaman)

theBoolean ^= true; 

theBoolean = !theBoolean; 

(çoğu insan için) "En görsel" yol (en belirsiz)

theBoolean = theBoolean ? false : true; 

Ekstra: atama operatörü hep atanmıştır neyi döndüren yana bir yöntem çağrısı

theMethod(theBoolean ^= true); 

yılında Geçiş ve kullanımı, bu bitsel operatör aracılığıyla değerini geçiş ve ardından yeni atanan değeri döndürecektir yöntem çağrısında kullanılabilir. Eğer Boole BOŞ değerleri kullanmak ve sahte bunları düşünün

+0

Uygulamayı, geçiş/değiştirme denilen bir fonksiyona/yönteme sarın ve sonra onu karıştırmanın neredeyse hiçbir yolu yoktur. – Lambage

0

, şunu deneyin:

static public boolean toggle(Boolean aBoolean) { 
    if (aBoolean == null) return true; 
    else return !aBoolean; 
} 

Eğer Boole NULL değerleri teslim değilseniz, bu deneyin:

static public boolean toggle(boolean aBoolean) { 
    return !aBoolean; 
} 

Bu en temiz vardır Yöntem imzasındaki amacı gösterdikleri için, ile karşılaştırıldığında okunması daha kolay! operatörü ve kolayca ayıklanabilir. Tabii

Kullanımı

boolean bTrue = true 
boolean bFalse = false 
boolean bNull = null 

toggle(bTrue) // == false 
toggle(bFalse) // == true 
toggle(bNull) // == true 

, sen Groovy veya uzatma yöntemleri sağlayan bir dil kullanırsanız, bir uzantı kayıt ederek yalnızca yapın: Ben yaklaşık ah güzel

Boolean b = false 
b = b.toggle() // == true