में कुंजी के रूप में सिंबल बनाम स्ट्रिंग का उपयोग करते हुए रेल यदि हम एक हैश कुंजी के रूप में स्ट्रिंग का उपयोग करते हैं, तो रूबी को स्ट्रिंग का मूल्यांकन करने और इसकी सामग्री को देखने की आवश्यकता होती है (और उस पर एक हैश फ़ंक्शन की गणना करें) और इसके परिणाम के साथ तुलना करें (हैश) चाबियों के मान जो पहले से ही हैश में संग्रहीत हैं।पैरा बनाम हैश
यदि हम हैश कुंजी के रूप में प्रतीक का उपयोग करते हैं, तो यह निहित है कि यह अपरिवर्तनीय है, इसलिए रूबी मूल रूप से केवल (हैश) ऑब्जेक्ट-आईडी की तुलना (ऑब्जेड) ऑब्जेक्ट-आईडी के विरुद्ध तुलना कर सकती है, पहले ही हैश में संग्रहीत हैं। (काफी तेज)।
लेकिन बात रेल params
जो HashWithIndifferentAccess
का उदाहरण है में है, अगर हम params[:some_key]
बारे में यह 'some_key'
को :some_key
धर्मान्तरित और फिर इसे पैरामीटर हैश में कुंजी देखने के लिए कोशिश करता है। line 159
def convert_key(key)
key.kind_of?(Symbol) ? key.to_s : key
end
इसलिए यदि देखने हैश में कुंजी के रूप में स्ट्रिंग के साथ धीमी है, क्यों करता है HashWithIndifferentAccess
स्ट्रिंग के लिए प्रतीक कुंजी को बदल देता है।
ठीक है अब समझ में आ गया है, इस के लिए धन्यवाद !! –