2012-03-05 22 views
136

私はRubyを使い慣れていないし、すでに存在するハッシュに新しい項目を追加する方法も知らない。例えば、最初に私は、ハッシュを構築:その後ハッシュに新しい項目を追加する方法

hash = {:item1 => 1} 

私はこのようなハッシュ持って、この後のように、ITEM2を追加したい:

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

を私はハッシュに何をすべきかの方法がわかりません、誰かが私を助けることができる?

+5

疑問には、([ドキュメント]を参照してくださいhttp://ruby-doc.org/core-1.9.3/Hash .html#method-i-5B-5D-3D)。 –

答えて

225

ハッシュを作成します。

hash = {:item1 => 1} 

はそれに新しい項目を追加します。

hash[:item2] = 2 
25

それは同じくらい簡単です:

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} 
54

あなたは別のハッシュから新しいアイテムを追加したい場合は - mergeメソッドを使用します。それができるあなたの特定のケースで

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

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

ですが、使用するのは賢明ではありません要素を1つだけ追加する必要があります。また、あなたは(もちろん)merge方法は、元の値に影響を与えていないことに注意を払う必要があります

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

正確hash[:item1] = 2

のような:mergeは、既存のキーと値を置き換えること

ご注意くださいof hash variable - 新しいマージされたハッシュを返します。あなたはハッシュ変数の値を置き換えたい場合は、代わりにmerge!を使用します。

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

をとしてハッシュを作成します。

h = Hash["one" => 1] 
+1

このように複数のキーを挿入しようとすると、毎回実際に新しいハッシュが作成されていることがわかります。おそらくあなたが望むものではないでしょう。もしあなたが望むならば、 'Hash []'はすでに新しいハッシュを作成しているので、 'Hash.new'部分は必要ありません。 – philomory

1
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. 
14

h = Hash.new 
=> {} 

今すぐとしてハッシュに挿入hash.store(key、value) - ハッシュ値でキーと値のペアを格納します。

例:

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

ИванБишевац@Documentation

関連する問題