Determining class of an object with case equality operator (===)
Alexander Spitsyn
Posted on September 2, 2019
Case equality operator (or triple equals, ===
) in Ruby returns true if the passed class is in the ancestors list of the passed object's class:
1.class.ancestors # [Integer, Numeric, Object, ...]
Numeric === 1 # true
Object === 1 # true
So it can be used for determining object's class:
String === 'abc' # true
'abc'.class #=> String
In cases above the case equality operator works like #kind_of?
(or #is_a?
):
1.kind_of?(Integer) # true
1.is_a?(Numeric) # true
The classes above has different implementations of ===
operator, that's why the results of comparison are different:
String.===('abc') # the same as String === 'abc'
Also it means that order of the arguments is important:
1 === Integer # false
💖 💪 🙅 🚩
Alexander Spitsyn
Posted on September 2, 2019
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
codenewbie My Journey Through Ruby Event Manager, Hangman, and Tackling Coolant Leaks
November 29, 2024