Question about the threequal operator .===

Hi

I’m a newbie on ruby and i have some questions :
*What is special to the threequals operator when it comes to when
clause ?
object === other_object

*What is the “.” in front of the operator ?
object .=== other_object
Thanks
John

On 15.08.2006 10:15, John wrote:

Hi

I’m a newbie on ruby and i have some questions :
*What is special to the threequals operator when it comes to when
clause ?
object === other_object

It’s simply the fact that it’s invoked. “when” doesn’t invoke ==, eql?
or equal? but ===.

*What is the “.” in front of the operator ?
object .=== other_object

This is just the normal method invocation syntax. Note that an operator
in Ruby is nothing else than an instance method with a special
invocation syntax.

10:25:00 [~]: irbs
o = Object.new
=> #Object:0x3f2ac8

def o.===(x) p x end
=> nil

o === 1
1
=> nil

o.=== 1
1
=> nil

o.===(1)
1
=> nil

o.send :===, 1
1
=> nil

These are all equivalent pieces of code.

Kind regards

robert

On 8/15/06, Robert K. [email protected] wrote:

On 15.08.2006 10:15, John wrote:

Hi

I’m a newbie on ruby and i have some questions :
*What is special to the threequals operator when it comes to when
clause ?
object === other_object

It’s simply the fact that it’s invoked. “when” doesn’t invoke ==, eql?
or equal? but ===.

And it does it differently than might be expected.

case object
when other_object
end

is the same as other_object === object, not the other way around.

-austin