2009-06-09 18 views
16

मैं हेड फर्स्ट रेल के माध्यम से अपना रास्ता काम कर रहा हूं, और मैं => देख रहा हूं। यह मार्गों में है:रेल पर रूबी: => प्रतीक का क्या अर्थ है?

map.connect '/marmots/new', controller=>'marmots', :action=>'new'

यह प्रतिपादन partials में बताया गया है:

render :partial=>"new_marmot"

यह लिंक के लिए विकल्पों में है:

<%= link_to 'Destroy', marmot, :confirm=>'Are you sure?', :method=>:delete %>

असल में, => मतलब लगता है ' बराबर है, 'लेकिन यदि हां, तो क्यों न केवल बराबर का उपयोग करें एस हस्ताक्षर? क्या यह 'भेजना' जैसा है?

आप कैसे उच्चारण करते हैं => और आप इसका क्या अर्थ समझते हैं? मैं इसे जानने के बिना प्राप्त कर सकता हूं, लेकिन यह मुझे खराब करता है।

+1

इस सवाल को देखते हुए 3 साल बाद मुझे हंसते हैं! मुझे यकीन है कि मैंने रूबी को पहले देखा था, लेकिन शायद मैंने रेल के बाहर के उदाहरण नहीं देखे थे, जहां आप एक विधि कॉल के ब्रांड्स और अंतिम हैश तर्क के चारों ओर ब्रेसिज़ को छोड़ देते हैं, इसलिए यह सिर्फ जादू की तरह दिखता था। –

उत्तर

8

आपका पहला समारोह कॉल के लिए

map.connect('/marmots/new', {:controller=>'marmots', :action=>'new'}) 

जहां {} एक हैश-शाब्दिक हैं एक शॉर्टकट है। ऑब्जेक्ट मैप से विधि विधि का दूसरा तर्क क्लास हैश का एक ऑब्जेक्ट है जिसमें दो कुंजियां हैं: नियंत्रक और: क्रिया (दोनों कक्षा प्रतीक के अक्षर हैं) जिनके संबंधित मान दो तार 'मार्मॉट' और 'नया' हैं।

संपादित करें: मैं इसे "तीर" या "मानचित्र" कहता हूं।

+0

क्या यह कहना सुरक्षित है कि जब भी मैं तीर देखता हूं, मैं वास्तव में एक हैश बना रहा हूं, भले ही {} छोड़े गए हों? –

+0

हाँ विधि कॉल में पैरामीटर के लिए, सामान्य में नहीं (यदि आप बचाव के साथ अपवाद पकड़ते हैं, तो ऑपरेटर "=>" भी प्रयोग किया जाता है)। –

18

मैंने सुना है कि इसे आमतौर पर "हैश रॉकेट" के रूप में जाना जाता है। यह असाइनमेंट ऑपरेटर है जो रूबी में हैश के साथ प्रयोग किया जाता है। तो अगर आप एक हैश है और एक प्रमुख (आमतौर पर एक शाब्दिक) के लिए एक मान देना चाहते हैं, का उपयोग

{key1 => value1, key2 => value2} 

रेल, और अन्य रूबी कोड, अक्सर पद्धतियां ठीक उसी प्रभाव को प्राप्त करने के लिए पैरामीटर के रूप में हैश पारित रूप में नामित पायथन जैसे अन्य भाषाओं में तर्क।

object.method({:param1 => value1, :param2 => value2}) 

संपादित करें: पढ़ते समय, मैं क्रिया के रूप में "हो जाता है" का उपयोग करता हूं, उदाहरण के लिए। param1 को मान 1 मिलता है, आदि

+0

मुझे नामांकित तर्कों के बारे में थोड़ा पसंद है। स्पष्ट प्रतिक्रिया के लिए धन्यवाद –

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