हैश में नया आइटम कैसे जोड़ें


177

मैं रूबी के लिए नया हूं और पहले से मौजूद हैश में नई चीज जोड़ना नहीं जानता। उदाहरण के लिए, पहले मैं हैश का निर्माण करता हूं:

hash = {item1: 1}

उसके बाद आइटम 2 जोड़ना चाहते हैं ताकि इसके बाद मेरे पास इस तरह हैश हो:

{item1: 1, item2: 2}

मुझे नहीं पता कि हैश पर क्या तरीका है, क्या कोई मेरी मदद कर सकता है?

जवाबों:


305

हैश बनाएँ:

hash = {:item1 => 1}

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

hash[:item2] = 2

7
मर्ज का उपयोग करें ! विधि hash.merge!(item2: 2)को मर्ज और मूल्य को बचाने !
मगुरी

3
@maguri hash.merge!(item2: 2)धीमी गति से प्रदर्शन करती है hash[:item2] = 2जब केवल एक तर्क होता है
राहुल डेस

72

यदि आप किसी अन्य हैश से नई वस्तुओं को जोड़ना चाहते हैं - उपयोग 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}

35

hash.store (कुंजी, मूल्य) - hash में एक कुंजी-मूल्य युग्म संग्रहीत करता है

उदाहरण:

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

Documentation


27

यह उतना ही सरल है:

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}


4
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. 

0

हैश बनाएं:

h = Hash.new
=> {}

अब हैश में डालें:

h = Hash["one" => 1]

2
यदि आप इस तरह से कई कुंजियाँ डालने का प्रयास करते हैं, तो आप देखेंगे कि आप वास्तव में हर बार एक नया हैश बना रहे हैं। शायद नहीं जो आप चाहते हैं। और अगर है कि है कि आप क्या चाहते हैं, तो आप की जरूरत नहीं है Hash.newहिस्सा हैं, क्योंकि Hash[]पहले से ही एक नया हैश पैदा कर रही है।
दार्शनिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.