Estoy buscando una forma elegante de asignar el valor almacenado dentro de un Hash a un objeto preexistente. Para que quede claro, si tengo un objeto, por ejemplo obj con dos atributos, decir el nombre y la edad, que desea asignar estos valores procedentes de un hash sin hacer algo como:modo SECO para asignar valores hash a un objeto
obj.name = hash[:name]
obj.age = hash[:age]
Gracias por su atención. Simone
¿Podría explicarme por qué tiene que wirte m = "# {key} =" insted of m = "# {key}"? –
Bueno, es difícil de explicar, pero en realidad es muy simple. Primero digamos con el propósito de explicar que 'key' es la cadena' x' y 'hash [key]' es '1' ... Ahora, en Ruby, el código' obj.x = 1' es en realidad equivalente a ' obj.x = (1) '. Entonces en la línea siguiente cuando estoy haciendo 'obj.send (m, ...)', necesito que 'asigne_ a esa propiedad. En otras palabras, si no hubiera puesto el signo igual en el nombre del método, habría llamado 'obj.x (1)' y 'x' simplemente no toma un parámetro (porque es una propiedad). Lo que quiero es 'obj.x = (1)' y es por eso que necesito '# {key} =' – rfunduk
También puede hacer: 'hash.each do | key, value |' luego use 'value' en lugar de' hash [tecla] '. – PhilT