significa que funciones example create contadores ruby hashmap

funciones - ¿Cómo hacer que la instancia del objeto sea una clave hash en Ruby?



que significa en ruby (2)

Agregue un método llamado ''hash'' a su clase:

class Foo def hash return whatever_munge_of_instance_variables_you_like end end

Esto funcionará de la forma que solicitó y no generará diferentes claves hash para objetos diferentes, pero idénticos.

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.

h = {} f1 = Foo.new(a,b) f2 = Foo.new(a,b)

f1 y f2 deberían ser iguales en este punto.

h[f1] = 7 h[f2] = 8 puts h[f1]

debería imprimir 8


Ver http://ruby-doc.org/core/classes/Hash.html

Hash usa key.eql? para probar claves para la igualdad. Si necesita usar instancias de sus propias clases como claves en un Hash, se recomienda que defina ambos eql? y métodos hash. El método hash debe tener la propiedad de que a.eql? (B) implica a.hash == b.hash.

El eql? El método es fácil de implementar: devuelve verdadero si todas las variables miembro son iguales. Para el método hash, use [@ data1, @ data2] .hash como sugiere Marc-Andre en los comentarios.