2012-05-18 9 views
19

मैं फैक्टरी लड़की के बारे में सीख रहा हूँ और मैं इस कोड को देखा:रूबी में हैश में पहचानकर्ता के बाद कोलन का अर्थ क्या है?

factory :post do 
    association :author, factory: :user, last_name: "Writely" 
end 

क्यों factory और last_name उनके अंत में एक पेट के लिए क्या है?

उत्तर

34

इस संदर्भ में कोलन एक शाब्दिक हैश को दर्शाता है।

factoryHash कुंजी है, :user मूल्य है।

वैकल्पिक वाक्यविन्यास :factory => :user है। उनका मतलब एक ही बात है।

+10

पर कुछ करना आसान बनाना है, ध्यान दें कि गैर-हैशरेट सिंटैक्स रूबी 1.9 में जोड़ा गया था, और पिछले संस्करणों में मौजूद नहीं है। –

+0

तो इस संदर्भ में ':' '=>' है? – Roman

+0

हां, रूबी 1.9 में पेश किया गया हैश लिखने का यह एक नया तरीका है, संभवतः क्योंकि यह => वाक्यविन्यास से थोड़ा अधिक संक्षिप्त है। – OzBandit

16

रूबी 1.8 वाक्य रचना:

:factory => :user 

रूबी 1.9 वाक्य रचना:

factory: :user 

ध्यान दें कि रूबी 1.8 वाक्य रचना 1.9 भी काम करता है।

+2

इस नए वाक्यविन्यास को जोड़ने के पीछे तर्क क्या था? मुझे लगता है कि यह रॉकेट/तीरों से भी बदतर पढ़ता है, जो आमतौर पर मैपिंग का प्रतिनिधित्व करने के लिए समझा जाता है। – Matthias

+2

मुझे अनिश्चितता है कि यह क्यों बदला गया था। मैं चारों ओर घूम गया और उस पर कोई स्पष्ट चर्चा नहीं मिली। यदि आपको कुछ पृष्ठभूमि pls पोस्ट करते हैं, तो मुझे दिलचस्पी है। धन्यवाद 1 –

+0

इस परिवर्तन के साथ कुछ करने के लिए कुछ हो सकता है कि कैसे जावास्क्रिप्ट और शायद अन्य भाषा ऑब्जेक्ट शाब्दिक नोटेशन को संभालती है। उदाहरण के लिए, जावास्क्रिप्ट में, हम कर सकते हैं: 'वर व्यक्ति = { नाम:" जॉन ", उम्र: 42, से शादी कर ली: झूठी }' तो वास्तव में, जब हम 'कारखाने गुजर रहे हैं: : उपयोगकर्ता ', हम वास्तव में क्या कर रहे हैं '{factory:: user}' पास कर रहा है, जिसे' {: factory =>: user} 'के रूप में भी लिखा गया है। 1.9 सिंटैक्स का उद्देश्य '{फैक्ट्री:" उपयोगकर्ता "}' –

0

अन्य उत्तरों सही हैं। इस नए वाक्यविन्यास के पीछे तर्क के बारे में कुछ अटकलें थीं। इस परिवर्तन में जावास्क्रिप्ट और शायद अन्य भाषाएं ऑब्जेक्ट शाब्दिक नोटेशन को कैसे प्रबंधित करती हैं, इसके साथ कुछ करने के लिए कुछ हो सकता है। शायद, इन भाषाओं को ऑब्जेक्ट सृजन को कैसे संभाला जाता है, इस बारे में रूबी को और अधिक ऑनलाइन लाने की आवश्यकता महसूस की गई थी।

उदाहरण के लिए, जावास्क्रिप्ट में, हम कर सकते हैं:

var person = { 
    name: "John", 
    age: 42, 
    married: false 
} 

तो सच में, जब हम factory: :user गुजर रहे हैं, क्या हम वास्तव में कर रहे हैं {factory: :user}, यह भी {:factory => :user} के रूप में लिखा जा रहा है। 1.9 सिंटैक्स का उद्देश्य {factory: "user"}

+0

मुझे लगता है कि यह हैश निर्दिष्ट करने का एक बेहतर तरीका है (हालांकि मुझे पाइथन डिक्ट्स से आने के बाद पक्षपातपूर्ण हो सकता है)। पोला और प्रोग्रामर-खुशी के परिप्रेक्ष्य से भी रूबी और आरओआर इतनी उत्साही रूप से समर्थन करते हैं, टाइपिंग-भारी हैशकेट मेरी राय में एक गले का अंगूठा था। अच्छा है कि अब हमारे पास कोलन नोटेशन का उपयोग करने का विकल्प है। – Shreyas

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