class() vs. type() in Ruby

45,375

Solution 1

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.

Solution 2

#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
Share:
45,375
gitguddoge
Author by

gitguddoge

Updated on May 07, 2020

Comments

  • gitguddoge
    gitguddoge about 4 years

    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.