Quelle est la différence entre les méthodes de classe et de type dans Ruby? J'ai remarqué que le type fonctionne pour trouver le type de certaines classes mais pas d'autres.
La principale différence est que Object#type
est obsolète. A partir du RDoc pour le type d'objet #:
Synonyme obsolète pour la classe Object #.
Voici pourquoi vous devez utiliser Object#class
:
Renvoie la classe d'obj, désormais préférée au type Object #, en tant que type d'objet dans Ruby n'est lié que de manière lâche à la classe de cet objet. Cette méthode doit toujours être appelée avec un récepteur, car la classe est également un mot réservé en Ruby.
En réalité, vous voudrez probablement utiliser Object#respond_to?
au lieu de vérifier la classe d'un objet dans la plupart des cas.
#type
est synonyme de #class
, mais il est déconseillé dans Ruby 1.8, et semble être passé de Ruby 1.9. Utilisez simplement #class
partout.
# Pour Ruby 1,8 $ Ri Type d'objet #. ------- -------------------------------------------------- --- Objet # type Obj.type => classe ---------------------------- -------------------------------------------- Obsolète synonyme de classe Object #. # Pour Ruby 1.9 $ ri1.9 Object # type Rien de connu sur l'objet # type