Oneliner सादा रूबी, यह केवल रूबी के साथ काम करता है> 1.9.x:
1.9.3p0 :002 > h = {:a => 1, :b => 2}
=> {:a=>1, :b=>2}
1.9.3p0 :003 > h.tap { |hs| hs.delete(:a) }
=> {:b=>2}
टैप विधि हमेशा उस वस्तु को लौटाती है जिस पर ...
अन्यथा यदि आपको आवश्यक है active_support/core_ext/hash
(जो कि प्रत्येक रेल एप्लिकेशन में स्वचालित रूप से आवश्यक है) तो आप अपनी आवश्यकताओं के आधार पर निम्न विधियों में से एक का उपयोग कर सकते हैं:
➜ ~ irb
1.9.3p125 :001 > require 'active_support/core_ext/hash' => true
1.9.3p125 :002 > h = {:a => 1, :b => 2, :c => 3}
=> {:a=>1, :b=>2, :c=>3}
1.9.3p125 :003 > h.except(:a)
=> {:b=>2, :c=>3}
1.9.3p125 :004 > h.slice(:a)
=> {:a=>1}
सिवाय एक ब्लैकलिस्ट दृष्टिकोण का उपयोग करता है, इसलिए यह आर्ग के रूप में सूचीबद्ध सभी कुंजी को हटा देता है, जबकि स्लाइस में एक श्वेतसूची दृष्टिकोण का उपयोग किया जाता है, इसलिए यह उन सभी कुंजियों को हटा देता है जिन्हें तर्क के रूप में सूचीबद्ध नहीं किया गया है। वहाँ भी उन विधि ( except!
और slice!
) के धमाके संस्करण मौजूद हैं जो दिए गए हैश को संशोधित करते हैं, लेकिन उनका वापसी मूल्य अलग है दोनों एक हैश लौटाते हैं। इसके लिए हटाए गए कुंजियों slice!
और except!
निम्न कुंजियों का प्रतिनिधित्व करता है :
1.9.3p125 :011 > {:a => 1, :b => 2, :c => 3}.except!(:a)
=> {:b=>2, :c=>3}
1.9.3p125 :012 > {:a => 1, :b => 2, :c => 3}.slice!(:a)
=> {:b=>2, :c=>3}