2015-01-03 8 views
6

माणिक में 2.2.0 आप इस तरह हैश लिख सकते हैं:नया तरीका 2.2.0

hash = { 'new_possible_style': :of_hashes } 
hash[:new_possible_style] #=> :of_hashes 
hash['new_possible_style'] #=> nil 

मैं इस शैली को लागू करने के लिए कारण पता ही नहीं सकता है। अगर मुझे कुंजी के रूप में स्ट्रिंग की आवश्यकता है (उदाहरण के लिए, कुछ तृतीय पक्ष लाइब्रेरी के लिए), मुझे अभी भी पुरानी शैली हैश का उपयोग करना होगा। इस 'फीचर' के लिए उपयोग के मामले क्या हैं? कोर डेवलपर्स ने इस शैली को क्यों जोड़ा?

अग्रिम धन्यवाद।

उत्तर

10

यह हैश प्रतिनिधित्व की एक नई शैली नहीं है, लेकिन मौजूदा शैली का विस्तार 1.9 में लगातार तरीके से जोड़ा गया है।

1.9 में, आप इस

hash = { symbol_key: 'value' } 

कर सकते हैं और आप भी इस तरह सिंटैक्स का उपयोग अन्यथा प्रतिबंधित पात्रों के साथ Symbol रों परिभाषित कर सकते हैं:

sym = :'a-symbol-with-dashes' 

हालांकि संस्करणों में 1.9 2.1, करने के लिए कोड

hash = { 'a-symbol-with-dashes': 'value' } 

मान्य वाक्यविन्यास के रूप में पहचाना नहीं गया है, इसके बजाय आपको यह मिलता है अपवाद SyntaxError: (irb):4: syntax error, unexpected ':', expecting =>

हैश सिंटैक्स में Symbol के आसपास उद्धृत रैपिंग के लिए समर्थन जोड़ना स्थिरता के लिए सबसे अधिक संभावना है। लघु हैश कुंजी सिंटैक्स के साथ एक प्रतीक शाब्दिक लिखते समय विकल्प अब हैश के बाहर एक ही शाब्दिक लिखते समय (जहां आप कोलन डालते हैं)

+0

महान उत्तर के लिए धन्यवाद! –

संबंधित मुद्दे