ExpertiDict

Ruby · Intermediário · Inglês · Técnico

eql?

/i kju ɛl/método

Método de comparação estrita usado pelo Hash para decidir se duas chaves são iguais. Em números, 1.eql?(1.0) é false, ao contrário de ==.

Onde usar

Aparece ao usar objetos próprios como chaves de Hash: é preciso definir eql? e hash de forma coerente. Também explica por que 1 e 1.0 são chaves diferentes.

Em código

p 1 == 1.0  # => true
p 1.eql?(1.0)  # => false
a = "x"
p a.eql?(a.dup)  # => true
p a.equal?(a.dup)  # => false
h = { 1 => :int }
p h[1.0]  # => nil

Exemplos

One and one point zero are equal but not eql.

Um e um ponto zero são iguais, mas não são eql.

Override eql and hash together for custom hash keys.

Sobrescreva eql e hash juntos para chaves de hash próprias.

Cuidado

Não o confunda com == (igualdade de valor) nem com equal? (mesma identidade); sobrescrever eql? sem sobrescrever hash quebra o Hash.

Veja também

Todos os termos de Ruby