हां, एक अंतर है। ये कानूनी हैं:
h = { :$in => array }
h = { :'a.b' => 'c' }
h[:s] = 42
लेकिन इन नहीं हैं:
h = { $in: array }
h = { 'a.b': 'c' } # but this is okay in Ruby2.2+
h[s:] = 42
तुम भी =>
के साथ एक कुंजी के रूप में कुछ भी उपयोग कर सकते हैं ताकि आप यह कर सकते हैं:
h = { C.new => 11 }
h = { 23 => 'pancakes house?' }
लेकिन आप कर सकते हैं ' टी ऐसा करें:
h = { C.new: 11 }
h = { 23: 'pancakes house?' }
जावास्क्रिप्ट शैली (key: value
) केवल तभी उपयोगी है जब आपकी सभी हैश कुंजी "सरल" प्रतीक हैं (/\A[a-z_]\w*\z/i
से मेल खाने वाली अधिक या कम, AFAIK पार्सर इन चाबियों के लिए अपने लेबल पैटर्न का उपयोग करता है)।
:$in
शैली प्रतीक मोंगोडीबी का उपयोग करते समय एक उचित बिट दिखाते हैं ताकि आप मोंगोडीबी का उपयोग करते हुए हैश शैलियों को मिलाकर समाप्त कर सकें। और, यदि आप कभी भी पूरे हैंश (h = { ... }
) की बजाय हैश (h[:k]
) की विशिष्ट कुंजी के साथ काम करते हैं, तो आपको अभी भी प्रतीकों के लिए कॉलन-प्रथम शैली का उपयोग करना होगा; आपको हैश के बाहर उपयोग किए जाने वाले प्रतीकों के लिए अग्रणी कॉलन शैली का भी उपयोग करना होगा। मैं लगातार होना पसंद करता हूं इसलिए मुझे जावास्क्रिप्ट शैली से परेशान नहीं है।
जावास्क्रिप्ट शैली के साथ कुछ समस्याएं रूबी 2.2 में तय की गई हैं। अब आप उदाहरण के लिए, उद्धरण चिह्नों का उपयोग कर सकते हैं अगर आपको लगता है कि वैध लेबल नहीं हैं प्रतीक हैं:
h = { 'where is': 'pancakes house?', '$set': { a: 11 } }
लेकिन आप अभी भी hashrocket की जरूरत है अपनी चाबी प्रतीक नहीं हैं।
स्रोत
2011-12-30 01:30:17
'h = {'a.b': 'c'}' अब रूबी 2.2.0 के रूप में कानूनी है। Https://bugs.ruby-lang.org/issues/4276 –
@BSeven देखें: धन्यवाद, मैंने [मेरे अन्य बड़े हैशकेट उत्तर] को अपडेट किया है (http://stackoverflow.com/a/10004344/479863) थोड़ी देर पहले लेकिन चूक गया यह वाला। –
आपको लगता है कि 'एच [: एस] = 42' उदाहरण इस सवाल से संबंधित क्यों है? मेरी राय में, जावास्क्रिप्ट शैली बनाम हैशरेट शैली केवल हैश कुंजी/मूल्य जोड़ी परिभाषा के लिए प्रासंगिक है, और कुंजी द्वारा हैश तत्वों को संबोधित नहीं करना है। इसलिए 'एच [एस:] = 42' उदाहरण भ्रामक प्रतीत होता है। –