41 votes

class() vs. type() en Ruby

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.

48voto

runako Points 4483

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.

15voto

kch Points 25855

#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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X