Tengo una clase Foo con algunas variables miembro. Cuando todos los valores en dos instancias de la clase son iguales, quiero que los objetos sean "iguales". Entonces me gustaría que estos objetos sean claves en mi hash. Cuando pruebo esto, el hash trata cada instancia como desigual.¿Cómo hacer que la instancia del objeto sea una clave hash en Ruby?
h = {}
f1 = Foo.new(a,b)
f2 = Foo.new(a,b)
f1 y f2 deben ser iguales en este punto.
h[f1] = 7
h[f2] = 8
puts h[f1]
debe imprimir 8
Explicación perfecta. =) – Mereghost
Bueno, excepto que el hash devuelto debe ser un fixnum, así que es mejor usar exclusive o en lugar de sum (que podría desbordarse a bignum). Alternativamente, use 'Array # hash', como' [@ data1, @ data2] .hash', por ejemplo. –
Buen punto. La adición de hashes individuales juntos también tiene el peligro de que la misma suma pueda resultar de diferentes hash individuales (3 + 2 = 5 y 1 + 4 = 5). Usar Array # hash como sugiere Marc-Andre haría que la solución sea más completa. – Mark