Comment append un nouvel article au hash

Je suis nouveau sur Ruby et je ne sais pas comment append un nouvel élément au hachage existant. Par exemple, je construis d’abord le hash:

hash = {:item1 => 1} 

après cela, vous voulez append un item2, donc après cela, j’ai le hash comme ceci:

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

Je ne sais pas quelle méthode faire sur le hash, quelqu’un pourrait-il m’aider?

Créez le hash:

 hash = {:item1 => 1} 

Ajoutez-y un nouvel élément:

 hash[:item2] = 2 

Si vous souhaitez append de nouveaux éléments à partir d’une autre méthode de hachage, utilisez la méthode de merge :

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

Dans votre cas spécifique, cela pourrait être:

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

mais il n’est pas sage de l’utiliser lorsque vous devriez append un élément de plus.

Attention, la merge remplacera les valeurs par les clés existantes:

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

exactement comme le hash[:item1] = 2

Aussi, vous devriez faire attention que la méthode de merge (bien sûr) n’affecte pas la valeur d’origine de la variable de hachage – elle retourne un nouveau hachage fusionné. Si vous voulez remplacer la valeur de la variable de hachage, utilisez la merge! au lieu:

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

C’est aussi simple que:

 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} 

hash.store (clé, valeur) – Stocke une paire clé-valeur dans le hachage.

Exemple:

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

Documentation

hash [key] = valeur Associe la valeur donnée par value à la clé donnée par key.

 hash[:newKey] = "newValue" 

De la documentation Ruby: http://www.tutorialspoint.com/ruby/ruby_hashes.htm

 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. 

Créer un hachage comme:

 h = Hash.new => {} 

Maintenant, insérez dans le hash comme:

 h = Hash["one" => 1]