Ho appena ricevuto un bug problematico nella mia applicazione di rails e ho scoperto che il problema era che! 0 era falso. Stavo scontando che, quello dovrebbe essere vero.! 0 è false nelle guide. Perché?
Ho avuto l'impressione che! l'operatore invertirà i bit in un numero intero in modo che 0 diventi tutti gli 1 e quindi sarebbe vero.
Non è questo il caso, perché?
notare anche dalla console rotaie:
1.9.3p286 :002 > !0
=> false
1.9.3p286 :003 > 0
=> 0
1.9.3p286 :004 > !1
=> false
1.9.3p286 :005 > !!0
=> true
1.9.3p286 :006 > !0
=> false
1.9.3p286 :007 > !23
=> false
Da wikipedia (http://en.wikipedia.org/wiki/Ruby_%28programming_language%29): "La valutazione booleana dei dati non booleani è rigorosa: 0," "e [] sono tutti valutati come veri. " –
Dai documenti ufficiali: http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html#UF – Pigueiras
L'operazione bit è irrilevante. – sawa