La forma correcta de determinar el «tipo» de un objeto, que es un término inestable en el mundo Ruby, es llamar object.class
.
Dado que las clases pueden heredar de otras clases, si desea determinar si un objeto es «de un tipo particular», puede llamar object.is_a?(ClassName)
para ver si object
es de tipo ClassName
o derivado de él.
Normalmente, la verificación de tipos no se realiza en Ruby, sino que los objetos se evalúan en función de su capacidad para responder a métodos particulares, comúnmente llamados «Tipeo de pato». En otras palabras, si responde a los métodos que desea, no hay razón para ser particular sobre el tipo.
Por ejemplo, object.is_a?(String)
es demasiado rígido ya que otra clase podría implementar métodos que lo conviertan en una cadena, o hagan que se comporte de manera idéntica a cómo se comporta String. object.respond_to?(:to_s)
sería una mejor manera de probar que el objeto en cuestión hace lo que usted desea.