false Ruby === Ruby
Cuando trabajamos con lenguajes como PHP o Javascript, existe un operador que conocemos bastante bien: ===
.
Este operador es sumamente útil en lenguajes que “creen” que "123" == 123 -> true
o 0 == false -> true
. Esto hace que errores como if (strpos( ... )) {
, sean tan comunes que en la documentación de strpos, nos encontremos con:

Entonces, la solución es usar ===
, que además de comparar que las expresiones tengan el mismo valor, se asegura de que sean de el mismo tipo, así "123" == 123 -> true
pero 0 === false -> false
. Excelente.
Pero en Ruby, es otra historia. Para empezar, en Ruby "123" == 123 -> false
, 0 == false -> false
, etc. Ruby es un poquito más estricto en este tipo de cosas.
Una buena definición de este operador en Ruby, es “Si tengo un cajón con la etiqueta a, tiene sentido poner b en ese cajón?” (“If I have a drawer labelled a would it make sense to put b in that drawer?”, visto en Stack Overflow). Es decir, si tengo un cajón con la etiqueta String
, puedo poner "hola"
y "123"
, aunque no al revés: Si tengo un cajón con la etiqueta "123"
, puedo poner "123"
pero no String
.
String === "123" -> true String === 123 -> false "123" === "123" -> true "123" === String -> false
Por otro lado, puedo tener un cajón con la etiqueta (1..10)
, y en ese cajón puedo poner números entre 1 y 10:
(1..10) === 4 -> true (1..10) === 10 -> true (1..10) === 15 -> false
Además, el resultado de este operador es el usado para el case
, lo que le da una utilidad muy genial!
case edad when 0 # -> 0 === edad puts "hum.." when (1...18) # -> (1...18) === edad puts "menor" else puts "mayor" end
Espero sea de utilidad para alguien 🙂