Es el operador de negación, !
, dos veces. Esto le da un valor que tiene el mismo valor de verdad, pero explícitamente es solo un booleano.
En Ruby, hay muchos valores que se consideran para ser "verdadero" (algo además false
y nil
), y un par que se considera que es "falso" (ambos false
y nil
). La primera negación convierte todos los valores verdaderos a false
, y todos los valores falsos a true
. La segunda negación luego invierte eso, dejándole un valor que tiene el mismo valor de verdad que el original, pero que solo permite los valores reales true
o false
.
Esto puede ser útil si no desea que las personas usen logged_in?
como una forma de acceder al usuario actual, sino que desea que simplemente devuelva un booleano.
Él él equivalente a la más explícito y detallado: "!"
def logged_in?
if current_user()
true
else
false
end
end
la el personaje se llama explosión. Google para "ruby double bang" arroja algunos buenos resultados. – shsteimer
Ahh sí, me olvidé del término de exclamación. ¿Es bang un término americano? Realmente no lo usamos en el Reino Unido, solo lo escuchamos en términos de software. Otro ejemplo es C#, que en el Reino Unido generalmente se llamaría C hash. – Jim
posible duplicado de [¿Qué hace! significa en ruby?] (http://stackoverflow.com/questions/524658/what-does-mean-in-ruby) –