2013-07-27 25 views
9

true ve false arasında bir değişkene geçiş yapmanın en iyi yolu nedir?Bir boole değişkeni değiştirmenin en iyi yolu nedir?

foo = false 

ve yapılacak:

foo = foo.! 

Ben geçiş yapmak istediğiniz her zaman bariz bir yol bir değişkeni foo başlatmak etmektir. Ancak bu, değişken adı uzun olduğunda ayrıntılı hale gelir. Bunu yapmak için daha basit bir yol var mı (sözdizimi şeker, özgün sınıflar gibi bir şey kullanarak)? Özellikle, bunu tek bir yöntemle değiştirmenin bir yolu olup olmadığını merak ediyorum:

+6

'foo.!' IMHO oldukça çirkin. Neden "foo =! Foo" değil? – Hauleth

+0

@ ŁukaszNiemier ile katılıyorum foo =! Foo daha yakut tarzı yol – CodeGroover

+0

'' 'yönteminin farkında bile değildim. @ ŁukaszNiemier'den gelen öneri daha tipiktir çünkü çift formda da değeri bir boole olmayan ve boole dönüştürülecek bir değişken almak için kullanılır. foo = 1; foo = !! foo; ' –

cevap

22

XOR operatörünü kullanabilirsiniz. Kullanılması

foo ^= true 

foo = false 
foo ^= true # => true 
foo ^= true # => false 
+0

Bu harika. İşe yarıyor. – sawa

+11

Çalışıyor, ancak bu ortak bir bilgi değil ve birçok kişi kodunuzda göründüğünde bunu anlamayacak. Başka programcıların sizin kodunuza bakıp bakma şansı varsa, standart olumsuzlamayı '!' Ile kullanmalısınız. –

+4

@Nate Ben bir şey doğru bir şey (veya bir bit ise, '1') mantıklı değeri (doğru/yanlış veya 1/0) geçişler olduğunda ortak bilgi olduğunu düşündüm. En azından, bit twiddlers dünyasında iyi bilinir. Temel boole mantığı. Bir yazılım mühendisi bunu anlayamazsa, endişelenirim. – lurker

İlgili konular