2010-11-25 7 views
14

रूबी 1.9.2 में नए हैश वाक्य रचना का मतलब है कि मैं निम्नलिखित कर सकते हैं:मैं नए रूबी 1.9.2 हैश सिंटैक्स का उपयोग करके एक कुंजी के रूप में एक पूर्णांक का उपयोग क्यों नहीं कर सकता?

my_hash = {a: 1, b: 2, c: 3} 

... जो के बराबर है:

my_hash = {:a => 1, :b => 2, :c => 3} 

ठीक है, पुराने वाक्य रचना इसलिए का उपयोग कर यह संभव है यह करने के लिए (पहली कुंजी एक पूर्णांक है):

my_hash = {1 => 1, :b => 2, :c => 3} 

और मैं मिल गया है यह नया और इस तरह वर्ष वाक्य रचना मिश्रण भी संभव है:

my_hash = {1 => 1, b: 2, c: 3} 

तो, अगर हम 'कम से कम आश्चर्य की बात है के सिद्धांत' आह्वान, एक उम्मीद होती है कि निम्नलिखित कानूनी होगा:

my_hash = {1: 1, b: 2, c: 3} 

... लेकिन यह नहीं है।

SyntaxError: (irb):40: syntax error, unexpected '=' 
my_hash = = {1: 1, b: 2, c: 3} 

किसी को भी अगर यह इस पार्सर की एक सीमा है व्याख्या कर सकते हैं, या वहाँ बहुत अच्छा कारण यह संभव है, या अनुमति नहीं है: यह एक सिंटैक्स त्रुटि उत्पन्न करता है?

+7

चूंकि 'ए: 1'': a => 1' के बराबर है और 'a => 1' के बराबर नहीं है, तो पीओएलएस निर्देश देता है कि' 1: 1' '1: 1 => 1' के बराबर होना चाहिए और यह है - दोनों एक वाक्यविन्यास त्रुटि का कारण बनता है। – sepp2k

+0

हाँ ... मैं इसे अब देखता हूं; बेशक! विडंबना यह है कि यह एकमात्र प्रयोग है जिसे मैंने कोशिश नहीं की थी। मुझे लगता है कि पोल्स के रास्ते में मेरे अपने सिरदर्द preconceptions मिल गया! स्पष्टीकरण के लिए धन्यवाद। – Scott

उत्तर

14

इस वाक्य रचना केवल रूबी 'प्रतीकों' के लिए है, और आम उपयोग के लिए एक विकल्प है:

:symbol => 5 
बल्कि एक सामान्य कुंजी के रूप में की तुलना में

More on symbols here. और दूसरों ने कम से कम आश्चर्य के प्रिंसिपल के संबंध में इसके बारे में लिखा है (here देखें)।

+1

अहह ... जो पूरी समझ में आता है। मुझे नहीं पता था कि नया वाक्यविन्यास केवल प्रतीकों के लिए था। आपके अति स्वाभाविक रूप से त्वरित प्रतिक्रिया के लिए धन्यवाद। – Scott

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

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