Ruby · Intermediário · Inglês · Técnico
eql?
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] # => nilExemplos
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.