Quelle est la différence entre les méthodes de classe et de type en Ruby ? J'ai remarqué que la méthode type fonctionne pour trouver le type de certaines classes mais pas d'autres.
Réponses
Trop de publicités?La différence essentielle est que Object#type
est déprécié. Extrait de la RDoc pour Object#type :
Synonyme déprécié de Object#class.
Voici pourquoi vous devriez utiliser Object#class
:
Retourne la classe de l'objet, maintenant préférée à Object#type, car le type d'un car le type d'un objet en Ruby n'est que faiblement vaguement lié à la classe de l'objet. Cette méthode doit toujours être appelée avec un récepteur explicite, car class 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 un synonyme de #class
mais il est déprécié dans ruby 1.8, et apparemment disparu de ruby 1.9. Utilisez simplement #class
partout.
\# For ruby 1.8
$ ri Object#type
------------------------------------------------------------ Object#type
obj.type => class
------------------------------------------------------------------------
Deprecated synonym for Object#class.
# For ruby 1.9
$ ri1.9 Object#type
Nothing known about Object#type