जवाबों:
Hashकी key?विधि आपको बताती है कि क्या दी गई कुंजी मौजूद है या नहीं।
session.key?("user")
जबकि Hash#has_key?काम हो जाता है, जैसा कि यहाँ मात्ज़ नोट करते हैं , इसके पक्ष में पदावनत किया गया है Hash#key?।
hash.key?(some_key)
नवीनतम रूबी संस्करणों में हैश उदाहरण में एक key?विधि है:
{a: 1}.key?(:a)
=> true
आपके पास जो हैश में है उसके आधार पर प्रतीक कुंजी या एक स्ट्रिंग कुंजी का उपयोग करना सुनिश्चित करें:
{'a' => 2}.key?(:a)
=> false
यह बहुत देर हो चुकी है लेकिन अधिमानतः प्रतीकों को कुंजी के रूप में उपयोग किया जाना चाहिए:
my_hash = {}
my_hash[:my_key] = 'value'
my_hash.has_key?("my_key")
=> false
my_hash.has_key?("my_key".to_sym)
=> true
my_hash2 = {}
my_hash2['my_key'] = 'value'
my_hash2.has_key?("my_key")
=> true
my_hash2.has_key?("my_key".to_sym)
=> false
लेकिन हैश बनाते समय यदि आप स्ट्रिंग को कुंजी के रूप में पास करते हैं तो यह कुंजी में स्ट्रिंग की खोज करेगा।
लेकिन जब हैश बनाते हैं तो आप प्रतीक को key_key के रूप में पास करते हैं? प्रतीक का उपयोग करके कुंजियों की खोज करेंगे।
यदि आप रेल का उपयोग कर रहे हैं, तो आप इससे Hash#with_indifferent_accessबचने के लिए उपयोग कर सकते हैं ; दोनों hash[:my_key]और hash["my_key"]एक ही रिकॉर्ड की ओर इशारा करेंगे
Hash#with_indifferent_accessबचने के लिए उपयोग कर सकते हैं ; दोनों :my_keyऔर "my_key"एक ही रिकॉर्ड की ओर इशारा करेंगे
आप हमेशा Hash#key?यह जांचने के लिए उपयोग कर सकते हैं कि कुंजी हैश में मौजूद है या नहीं।
अगर नहीं तो वह आपको लौटा देगा false
hash = { one: 1, two:2 }
hash.key?(:one)
#=> true
hash.key?(:four)
#=> false
एक और तरीका यहाँ है
hash = {one: 1, two: 2}
hash.member?(:one)
#=> true
hash.member?(:five)
#=> false