2012-03-05 13 views
136

पर नया आइटम कैसे जोड़ें I रूबी के लिए नया हूं और यह नहीं पता कि पहले से मौजूद हैश में नया आइटम कैसे जोड़ना है।हैश

hash = {:item1 => 1} 

है कि एक चाहते हैं के बाद ITEM2 जोड़ने के लिए तो इस के बाद मैं इस तरह हैश है: उदाहरण के लिए, पहले मैं हैश निर्माण

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

मैं क्या विधि हैश पर करने के लिए पता नहीं है, क्या कोई मेरी मदद कर सकता है?

hash = {:item1 => 1} 

इसे करने के लिए एक नया आइटम जोड़ें:

hash[:item2] = 2 
+5

@ ИванБишевац संदेह होने पर, परामर्श [प्रलेखन] (http://ruby-doc.org/core-1.9.3/Hash .html # विधि-ए-5 ब-5D-3 डी)। –

उत्तर

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

हैश [कुंजी] = मूल्य एसोसिएट्स

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} 

लेकिन इसका उपयोग करना बुद्धिमान नहीं है आपको केवल एक तत्व जोड़ना चाहिए।

वेतन ध्यान कि merge मौजूदा कुंजी के साथ मूल्यों को बदल देगा:

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

बिल्कुल hash[:item1] = 2 तरह

इसके अलावा, आप ध्यान देना चाहिए कि merge (बेशक) विधि मूल मूल्य को प्रभावित नहीं करता हैश वैरिएबल - यह एक नया विलय हैश देता है। आप हैश चर के मूल्य को बदलने के लिए चाहते हैं, तो merge! बजाय का उपयोग करें:

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

हैश बनाएं रूप में:

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

यदि आप इस तरह से कई कुंजी डालने का प्रयास करते हैं, तो आप देखेंगे कि आप वास्तव में हर बार एक नया हैश बना रहे हैं। शायद आप जो चाहते हैं वह नहीं। और यदि वह _is_ जो आप चाहते हैं, तो आपको 'हैश.न्यू' भाग की आवश्यकता नहीं है, क्योंकि 'हैश []' पहले से ही एक नया हैश बना रहा है। – 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 #=> {"a"=>9, "b"=>200, "c"=>4} 
hash.store("d", 42) #=> 42 
hash #=> {"a"=>9, "b"=>200, "c"=>4, "d"=>42} 

Documentation