क्या हाश रॉकेट को पदावनत किया गया है?


99

अच्छी तरह से उद्धृत आरआईपी हैश रॉकेट पोस्ट को लगता है कि हैश रॉकेट सिंटैक्स ( :foo => "bar") नए-से-रूबी जोंस-शैली हैश ( foo: "bar") के पक्ष में चित्रित किया गया है , लेकिन मुझे हश रॉकेट फॉर्म के बारे में कोई निश्चित जानकारी नहीं मिल सकती है वास्तव में रूबी 1.9 के रूप में पदावनत / अप्राप्त है।


मुझे लगता है कि आदमी केवल रूबी को रेल के साथ उपयोग करता है।
निकल्स बी।

लंबे समय तक रॉकेट
HashRocketSyntax

रॉकेट अभी भी मजबूत हो रहा है hem
mahemoff

जवाबों:


132

कि ब्लॉग पोस्ट के लेखक ज्यादा नाटकीय और मूर्ख किया जा रहा है, =>है अभी भी काफी आवश्यक । विशेष रूप से:

  1. आपको उन प्रतीकों के लिए रॉकेट का उपयोग करना चाहिए जिनके लिए उद्धरण की आवश्यकता होती है: :'where.is' => xमान्य है लेकिन 'where.is': xऐसा नहीं है। रूबी 2.2 ने इस समस्या को ठीक कर दिया है ताकि आप 'where.is': xरूबी 2.2+ में कह सकें ।
  2. आपको उन प्रतीकों के लिए रॉकेट का उपयोग करना चाहिए जो मान्य लेबल नहीं हैं: :$set => xमान्य है लेकिन $set: xऐसा नहीं है। रूबी 2.2+ में आप उद्धरण के साथ इस समस्या को हल कर सकते हैं: '$set': xद राइट थिंग करेंगे।
  3. यदि आप अपने हैश में उन प्रतीकों का उपयोग करते हैं जो प्रतीक नहीं हैं तो आपको रॉकेट का उपयोग करना चाहिए: 's' => xमान्य है लेकिन 's': xकुछ पूरी तरह से अलग है।

आप पाठ्यक्रम के स्पष्ट तरीके से उपरोक्त के आसपास कीचड़ उछाल सकते हैं:

h = { }
h[:'where.is'] = 'pancakes house?'
# etc.

लेकिन यह सिर्फ बदसूरत और अनावश्यक है।

रूबी हेशेस को अपंग किए बिना रॉकेट कहीं भी नहीं जा रहा है।


6
s / पीढ़ी नाटकीय और मूर्ख / नाटकीय और वकालत के साथ एक श्रद्धांजलि /। आपके बाकी बिंदु खड़े होते हैं।
debhur

15
आपको आश्चर्य होगा कि नए सिंटैक्स का उपयोग करते समय, जब आपको अभी भी कुछ परिदृश्यों के लिए पुराने सिंटैक्स पर भरोसा करने की आवश्यकता होती है, तो बस हमारे कोड को जटिल करेगा।
डेव रापिन

4
@DaveRapin: यही कारण है कि मैं गैर-रॉकेट सिंटैक्स के साथ परेशान नहीं करता हूं। मैं MongoDB के काम का एक अच्छा सा काम करता हूं और मैं अक्सर गैर-प्रतीकों का उपयोग हाश कीज़ (कभी भी h[:s]मेरे द्वारा किए गए सभी काम नहीं करता) के रूप में करता हूं, इसलिए जावास्क्रिप्ट स्टाइल सिंटैक्स मेरे लिए केवल व्यर्थ जटिलता है। मेरे लिए एक खराब विचार वाले जी-व्हिज़ विचार की तरह लगता है और अब हम इसके साथ जुड़े हुए हैं और संबंधित भ्रम हमेशा के लिए।
म्यू बहुत छोटा है

8
@DaveRapin a = [0,1,4,9]बनाम पर विचार करें a = Array.new(4){ |i| i**2 }। जब आप कभी-कभी उत्तरार्द्ध का उपयोग करने की आवश्यकता करते हैं तो पूर्व का उपयोग क्यों करें? उत्तर: क्योंकि यह अधिक सुविधाजनक है। TIMTOWTDI भाषा को जटिल बनाता है, लेकिन यह एक व्यापार है। लुआ वास्तव में मूल रूप से सुरुचिपूर्ण है और इसलिए सीखना आसान है, लेकिन वास्तव में कोड करने के लिए कष्टप्रद है। रूबी के पास बहुत सारे विशेष मामले और कस्टम विशेषताएं हैं जो इसे सीखना कठिन बनाते हैं, लेकिन एक कार्यक्रम के लिए मुझे खुशी है, एक के लिए, आपका स्वागत है। सामान्य मामले के लिए सरल-से-प्रकार, आसान-से-पढ़ा हुआ हैश-के-प्रतीक-कुंजियाँ संकेतन।
मेंढक

7
टाइप करने के लिए कम मज़ेदार, मैं निश्चित रूप से हैश रॉकेट पसंद करता हूं। क्यों? क्योंकि इसका मतलब है कि किसी भी समय मैं एक कुंजी के लिए एक प्रतीक का उपयोग करता हूं जिसे मैं अपनी परियोजना में कहीं भी एक स्ट्रिंग के लिए खोज कर सकता हूं जो कि एक कोलन के साथ शुरू होता है। मेरे लिए, वास्तविक पात्रों के बीच निरंतरता की कमी कुंजी को निरूपित करती है my_hash = {a:1}और myhash[:a] = 1कम से कम, बल्कि कष्टप्रद होती है। मुझे यकीन है कि मैं अकेला नहीं हूं जो इस तरह से महसूस करता है।
हुलियाक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.