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 as below, or enter http://melksh.am/nnnn for individual articles
R108 - Ruby - More Classes and Objects [184] MTBF of coffee machines - (2005-01-20)
[656] Think about your design even if you don't use full UML - (2006-03-24)
[1217] What are factory and singleton classes? - (2007-06-04)
[1587] Some Ruby programming examples from our course - (2008-03-21)
[2292] Object Orientation in Ruby - intermediate examples - (2009-07-16)
[2603] Ruby objects - a primer - (2010-01-29)
[2604] Tips for writing a test program (Ruby / Python / Java) - (2010-01-29)
[2616] Defining a static method - Java, Python and Ruby - (2010-02-01)
[2620] Direct access to object variable (attributes) in Ruby - (2010-02-02)
[2623] Object Oriented Ruby - new examples - (2010-02-03)
[2717] The Multiple Inheritance Conundrum, interfaces and mixins - (2010-04-11)
[2977] What is a factory method and why use one? - Example in Ruby - (2010-09-30)
[2980] Ruby - examples of regular expressions, inheritance and polymorphism - (2010-10-02)
[3142] Private and Public - and things between - (2011-01-22)
[3154] Changing a class later on - Ruby - (2011-02-02)
[3158] Ruby training - some fresh examples for string handling applications - (2011-02-05)
[3260] Ruby - a training example that puts many language elements together to demonstrate the whole - (2011-04-23)
[3760] Why you should use objects even for short data manipulation programs in Ruby - (2012-06-10)
[3781] Private, Protected, Public in Ruby. What about interfaces and abstract classes in Ruby? - (2012-06-23)
[3782] Standard methods available on all objects in Ruby - (2012-06-23)
[4366] Changing what operators do on objects - a comparison across different programming languages - (2014-12-26)
[4504] Where does Ruby load modules from, and how to load from current directory - (2015-06-03)
[4550] Build up classes into applications sharing data types in Ruby - (2015-10-23)
[4551] Testing your new class - first steps with cucumber - (2015-10-23)
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