Subsecciones


Igualdad de Objetos

El método equal?

Usado para comprobar cuando se refieren al mismo objeto.

The equal? method is defined by Object to test whether two values refer to exactly the same object. For any two distinct objects, this method always returns false:

ruby-1.9.2-p290 :009 > a = "hello"
 => "hello" 
ruby-1.9.2-p290 :010 > b = c = "hello"
 => "hello" 
ruby-1.9.2-p290 :011 > a.equal? b
 => false 
ruby-1.9.2-p290 :012 > b.equal? c
 => true

By convention, subclasses never override the equal? method.

Another way to determine if two objects are, in fact, the same object is to check their object_id :

a.object_id == b.object_id   # Works like a.equal?(b)

El operador ==

The == operator is the most common way to test for equality. In the Object class, it is simply a synonym for equal? , and it tests whether two object references are identical.

Most classes redefine this operator to allow distinct instances to be tested for equality:

ruby-1.9.2-p290 :013 > a = "hello"
 => "hello" 
ruby-1.9.2-p290 :014 > b = c = "hello"
 => "hello" 
ruby-1.9.2-p290 :015 > a == b
 => true

El método eql?

The eql? method is defined by Object as a synonym for equal?. Classes that override it typically use it as a strict version of == that does no type conversion.

ruby-1.9.2-p290 :019 > 1 == 1.0
 => true 
ruby-1.9.2-p290 :020 > 1.eql? 1.0
 => false

The Hash class uses eql? to check whether two hash keys are equal.

If two objects are eql?, their hash methods must also return the same value.

El operador ===

The === operator is commonly called the case equality operator and is used to test whether the target value of a case statement matches any of the when clauses of that statement.

Range defines === to test whether a value falls within the range.

ruby-1.9.2-p290 :021 > (1..10) === 5
 => true
Regexp defines === to test whether a string matches the regular expression.
ruby-1.9.2-p290 :022 > /\d+/ === "a432b"
 => true 
ruby-1.9.2-p290 :023 > /\d+/ === "acb"
 => false
And Class defines === to test whether an object is an instance of that class.
ruby-1.9.2-p290 :024 > String === 's'
 => true 
ruby-1.9.2-p290 :025 > String === 32
 => false

El operador

The operator is defined by String and Regexp (and Symbol in Ruby 1.9) to perform pattern matching.

Casiano Rodriguez León 2015-06-18