In Ruby, have you ever wanted to know if an object is of a particular type?
The
instance_of? method will return a true value if an object is of the type given as a parameter. However,
instance_of? will return a false if we use it to check whether an object
inherits from another class. So it's an
exact check on the class name.
The
is_a? method will return a true value if an object is a of the type given as a parameter OR if it inherits from the type given as a parameter. So in effect, you can use it to ask "is there going to be a method from a class which I can run on this object".
Some sample code:
glug.each do |current|
puts current.bright, current.sides, current.area
puts current.class
puts current.instance_of?(Shape)
puts current.is_a?(Shape)
end
If the objects in the array
glug are of type "Box" and "Circle" (which they were on today's
Ruby Course), and boxes and circles inherit from Shapes, then the
instance_of? calls will all return false, and the
is_a? calls will return true.
(written 2010-01-27, updated 2010-01-28)
Associated topics are indexed under
R108 - Ruby - More Classes and Objects [3260] Ruby - a training example that puts many language elements together to demonstrate the whole - (2011-04-23)
[3158] Ruby training - some fresh examples for string handling applications - (2011-02-05)
[3154] Changing a class later on - Ruby - (2011-02-02)
[3142] Private and Public - and things between - (2011-01-22)
[2980] Ruby - examples of regular expressions, inheritance and polymorphism - (2010-10-02)
[2977] What is a factory method and why use one? - Example in Ruby - (2010-09-30)
[2717] The Multiple Inheritance Conundrum, interfaces and mixins - (2010-04-11)
[2623] Object Oriented Ruby - new examples - (2010-02-03)
[2620] Direct access to object variable (attributes) in Ruby - (2010-02-02)
[2616] Defining a static method - Java, Python and Ruby - (2010-02-01)
[2604] Tips for writing a test program (Ruby / Python / Java) - (2010-01-29)
[2603] Ruby objects - a primer - (2010-01-29)
[2292] Object Orientation in Ruby - intermediate examples - (2009-07-16)
[1587] Some Ruby programming examples from our course - (2008-03-21)
[1217] What are factory and singleton classes? - (2007-06-04)
[656] Think about your design even if you don't use full UML - (2006-03-24)
[184] MTBF of coffee machines - (2005-01-20)
Some other Articles
Ruby on Rails - a sample application to teach you howEast of Melksham - Building Work StartsRuby - is_a? v instance_of? - what is the difference?Go Programming Language and Courses?Telling Apache web servers apart / notes for the non-technicalAn excuse for making a sales callDoes my course include breakfast, lunch, dinner and a hotel room?Http protocol - what does a web server send