অনলাইনার প্লেইন রুবি, এটি কেবল রুবি> 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}