update rails create array ruby hash

rails - ruby hash to json



Cómo agregar un nuevo elemento al hash (7)

Soy nuevo en Ruby y no sé cómo agregar un nuevo elemento al hash ya existente. Por ejemplo, primero construyo hash:

hash = {:item1 => 1}

después de eso, quiero agregar item2, así que después de esto, tengo hash como este:

{:item1 => 1, :item2 =>2}

No sé qué método usar en hash, ¿podría alguien ayudarme?


Crea el hash:

hash = {:item1 => 1}

Agregue un nuevo artículo a él:

hash[:item2] = 2


Crear hash como:

h = Hash.new => {}

Ahora inserte en hash como:

h = Hash["one" => 1]


Es tan simple como:

irb(main):001:0> hash = {:item1 => 1} => {:item1=>1} irb(main):002:0> hash[:item2] = 2 => 2 irb(main):003:0> hash => {:item1=>1, :item2=>2}


Si desea agregar nuevos elementos de otro hash, use el método de merge :

hash = {:item1 => 1} another_hash = {:item2 => 2, :item3 => 3} hash.merge(another_hash) # {:item1=>1, :item2=>2, :item3=>3}

En su caso específico, podría ser:

hash = {:item1 => 1} hash.merge({:item2 => 2}) # {:item1=>1, :item2=>2}

pero no es aconsejable usarlo cuando debería agregar solo un elemento más.

Preste atención que merge reemplazará los valores con las claves existentes:

hash = {:item1 => 1} hash.merge({:item1 => 2}) # {:item1=>2}

exactamente como hash[:item1] = 2

También debe prestar atención que el método de merge (por supuesto) no afecta el valor original de la variable hash - devuelve un nuevo hash fusionado. Si desea reemplazar el valor de la variable hash, ¡utilice merge! en lugar:

hash = {:item1 => 1} hash.merge!({:item2 => 2}) # now hash == {:item1=>1, :item2=>2}



hash.store (clave, valor) : almacena un par clave-valor en hash.

Ejemplo:

hash #=> {"a"=>9, "b"=>200, "c"=>4} hash.store("d", 42) #=> 42 hash #=> {"a"=>9, "b"=>200, "c"=>4, "d"=>42}

Documentation


hash_items = {:item => 1} puts hash_items #hash_items will give you {:item => 1} hash_items.merge!({:item => 2}) puts hash_items #hash_items will give you {:item => 1, :item => 2} hash_items.merge({:item => 2}) puts hash_items #hash_items will give you {:item => 1, :item => 2}, but the original variable will be the same old one.