Because it s implemented differently in each class it will behave differently depending on the type of object it was called on.
Ruby string comparison equal.
Comparison operators take simple values numbers or strings as arguments and used to check for equality between two values.
This works because the string class implements a two equal signs method that knows how to compare strings.
For each operator plus.
Ruby supports a rich set of operators as you d expect from a modern language.
Then ruby would use object s implementation of which defaults to testing for object identity instead of object contents.
Method in the object referred to by variable a is called with b as its argument.
Object comparison is extremely important not only do we tend to often explicitly compare objects to each other e g.
For example 1 1 1 will return true because the numbers on both sides represent the same value.
Just like other object oriented languages ruby gives an object ways to find out if it is equal to greater or less than another object.
It is not uncommon to need to compare two strings either to assess equality or to find out if one string is higher or lower than the other alphabetically speaking.
With an if statement you can check if something is true.
But what if string didn t implement.
Most operators are actually method calls.
For example a plus.
The expression a a also returns true because both strings have the same value.
One equals sign in ruby means assignment make sure to use when you want to find out if two things are the same.
In order to compare things ruby has a bunch of comparison operators.
Equality is performed either using the or eql.
If you don t this right you won t get the expected results.
But when you want to check for the opposite not true false.
Notice that we use two equal symbols to mean equality.
Object new object new false string new string.
There is a corresponding form of abbreviated assignment operator.
B is interpreted as a plus b where the plus.
John fred false john eql.
Nil is returned if the two values are incomparable.
Many of ruby s built in classes such as string range and regexp provide their own implementations of the operator also known as case equality triple equals or threequals.
Comparison returns 1 0 1 or nil depending on whether string is less than equal to or greater than other string.