2013-07-27 16 views
9

Jaki jest najlepszy sposób na przełączanie między zmiennymi true i false? Oczywistym sposobem jest zainicjować zmienną foo:Jaki jest najlepszy sposób przełączania zmiennej binarnej?

foo = false 

i zrobić:

foo = foo.! 

za każdym razem, gdy chcę, aby przełączyć. Ale staje się to pełne, gdy nazwa zmiennej jest długa. Czy istnieje prostszy sposób, aby to zrobić (przy użyciu czegokolwiek takiego jak cukier składniowy, oryginalne klasy)? W szczególności zastanawiam się, czy istnieje sposób przełączania, podając jedną metodę:

foo.some_method 
+6

Korzystanie 'foo.!' Jest IMHO dość brzydki. Dlaczego nie 'foo =! Foo'? – Hauleth

+0

Zgadzam się z @ ŁukaszNiemier foo =! Foo więcej stylu ruby ​​ – CodeGroover

+0

Nie wiedziałem nawet o metodzie "!". Sugestia z @ ŁukaszNiemiera jest bardziej typowa, ponieważ jest również używana w podwójnej formie do przyjmowania zmiennej, której wartość może nie być wartością logiczną i przekształcać ją w wartość logiczną. 'foo = 1; foo = !! foo; '. –

Odpowiedz

22

Możesz użyć operatora XOR.

foo ^= true 

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

To jest fajne. To działa. – sawa

+11

Działa, ale nie jest to powszechna wiedza i wielu ludzi po prostu tego nie zrozumie, gdy zobaczymy to w twoim kodzie. Jeśli jest jakakolwiek szansa, że ​​inni programiści będą się przyglądać i utrzymywać twój kod, powinieneś użyć standardowej negacji z '!'. –

+4

@Nate Pomyślałem, że powszechnie wiadomo, że gdy coś xor jest z prawdą (lub jeśli jest to trochę, '1'), przełącza się wartość logiczna (prawda/fałsz lub 1/0). Przynajmniej jest dobrze znany w świecie twiddlerów bitowych. To podstawowa logika boolowska. Jeśli inżynier oprogramowania nie będzie w stanie szybko tego rozgryźć, wtedy będę zaniepokojony. – lurker

Powiązane problemy