This works because the string class implements a two equal signs method that knows how to compare strings.
Ruby string comparison equal.
Notice that we use two equal symbols to mean equality.
There is a corresponding form of abbreviated assignment operator.
With an if statement you can check if something is true.
The expression a a also returns true because both strings have the same value.
Method in the object referred to by variable a is called with b as its argument.
Because it s implemented differently in each class it will behave differently depending on the type of object it was called on.
Nil is returned if the two values are incomparable.
If you don t this right you won t get the expected results.
In order to compare things ruby has a bunch of comparison operators.
Comparison operators take simple values numbers or strings as arguments and used to check for equality between two values.
Object new object new false string new string.
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.
Most operators are actually method calls.
Object comparison is extremely important not only do we tend to often explicitly compare objects to each other e g.
But when you want to check for the opposite not true false.
For example a plus.
John fred false john eql.
But what if string didn t implement.
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.
B is interpreted as a plus b where the plus.
Comparison returns 1 0 1 or nil depending on whether string is less than equal to or greater than other string.
For example 1 1 1 will return true because the numbers on both sides represent the same value.
Equality is performed either using the or eql.
One equals sign in ruby means assignment make sure to use when you want to find out if two things are the same.
Ruby supports a rich set of operators as you d expect from a modern language.
The operator returns true if both objects can be considered the same.
If the strings are of different lengths and the strings are equal when compared up to the shortest length then the longer string is considered greater than the shorter one.
Then ruby would use object s implementation of which defaults to testing for object identity instead of object contents.