जैसा कि another question में देखा गया है, ऐसा लगता है कि http://ruby-doc.org वर्तमान में (गलती से) रूबी 2.4.1 के लिए प्रलेखन उत्पन्न करता है जो वास्तव में 2.4.1 संस्करण के बजाय रुबी ट्रंक पर आधारित है।
दुर्भाग्यवश, Hash#transform_keys
विधि किसी भी 2.4 रिलीज के हिस्से के रूप में अभी तक जारी नहीं की गई है। इसे Feature #13583 के साथ रूबी ट्रंक के लिए विकसित और अनुकूलित किया गया था लेकिन स्थिर 2.4 शाखा में अभी तक (अभी तक) बैकपोर्ट नहीं किया गया था।
कि के लिए समाधान के लिए, आप के बजाय इस विधि का उपयोग कर सकते हैं:
def transform_keys(hash)
result = {}
hash.each_pair do |key, value|
result[yield(key)] = value
end
result
end
इसके तुल्य (जो है: थोड़ा कम है लेकिन यह भी थोड़ा धीमा) आप इस का उपयोग cpuld:
def transform_keys(hash)
hash.keys.each_with_object({}) do |key, result|
result[(yield(key)] = hash[value]
end
end
यदि आप बोल्ड हैं, तो आप इसे Hash
कक्षा में कोर-पैच के रूप में विज्ञापन कर सकते हैं, जहां आपको hash
के प्रत्येक उल्लेख को self
के साथ प्रतिस्थापित करना होगा।
ध्यान दें कि ActiveSupport (यानी रेल) इस सटीक विधि के साथ हमेशा के लिए कोर-पैच लाता है। वे दोनों कार्यान्वयन के मिश्रण का उपयोग करते हैं।
स्रोत
2017-09-25 21:06:21
दस्तावेज कहने के बावजूद, विधि, रूबी 2.4.1 में शिप नहीं किया गया था। यह अजीब बात है कि एक दूसरे के बिना भेज दिया। आश्चर्यजनक रूप से 2.4.2 में यह विधि नहीं है, इसलिए यह या तो दस्तावेज में एक बग है, या 2.4.x शाखा में एक अनुपलब्ध सुविधा है। – tadman