What's the difference between the class and type methods in Ruby? I've noticed that type works to find the type of some classes but not others.
What's the difference between the class and type methods in Ruby? I've noticed that type works to find the type of some classes but not others.
The key difference is that Object#type is deprecated. From the RDoc for Object#type:
Deprecated synonym for Object#class.
Here's why you should use Object#class:
Returns the class of obj, now preferred over Object#type, as an object‘s type in Ruby is only loosely tied to that object‘s class. This method must always be called with an explicit receiver, as class is also a reserved word in Ruby.
In reality, you probably want to use Object#respond_to? instead of checking for the class of an object in most cases.
#type is a synonym for #class, but it's deprecated in ruby 1.8, and apparently gone from ruby 1.9. Just use #class everywhere.
# 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