No entiendo el siguiente código (x!):si vs si (x == false) en rubí
ruby-1.9.1-p378 > puts "nil is false" unless nil
nil is false
=> nil
ruby-1.9.1-p378 > puts "nil isn't false" unless nil == false
nil isn't false
=> nil
En la mayoría de los idiomas (de un C-base, por lo menos), si (! cond) y si (cond == false) evalúan lo mismo. ¿Qué está pasando aquí para hacer que no sea el caso?
(me gustaría los detalles de por qué, entiendo que así es como es.)
nil no es * realmente falso *, es solo * falsey *. Explicación perfecta +1. Y sí, por favor no anule == o! o lo que sea si no tienes una muy buena razón. – MatrixFrog
+1 para una buena respuesta. Lo mismo es cierto en PHP, que tuvo que inventar el operador '===' (sí, eso es * tres * '=') – Mawg
Muchas gracias por la explicación. –