¿Cuál es una forma garantizada de comparar dos objetos por su identidad en Ruby? Dadas dos variables, quiero volver verdadero si las variables apuntan exactamente al mismo objeto en la memoria.Forma garantizada de comparar objetos por identidad en Ruby
Para la mayoría de los objetos de Ruby, el método equal?
compara por la identidad:
f = g = Object.new
p f.equal? g # => true
Sin embargo, esto no funciona para todos los objetos. Por ejemplo:
class F
def ==(obj) false end
def ===(obj) false end
def eql?(obj) false end
def equal?(obj) false end
def object_id; self end
end
f = g = F.new
p f == g # => false
p f === g # => false
p f.eql? g # => false
p f.equal? g # => false
p f.object_id == g.object_id # => false
¿Qué es una forma infalible/garantizada de comparar dos objetos de identidad que no puede ser derrotado?
Esta es una cuestión puramente intelectual. La respuesta a cualquier pregunta que comience con "por qué" probablemente será "porque tengo curiosidad".
¿Cuál es la palabra para cosas en informática y matemáticas como F? Hay alguna palabra para eso. Quiero decir "diabólico", pero menos malvado. –
Creo que la palabra es "incorrecta". Como en, no es algo que debas hacer. – Chuck
Quiero usar una palabra que comienza con "F" ...No hay garantías a menos que quieras escribir una extensión C, se supone que debes ser amable, pero no hay nada que impida que alguien sea un sociópata antisocial. –