ठीक से दोहराया जा सकता है।
=
और =>
ऑपरेटरों के बीच का अंतर यह है कि पहला असाइनमेंट है, दूसरा हैश (एसोसिएटिव सरणी) में एक एसोसिएशन का प्रतिनिधित्व करता है। तो { :key => 'val' }
कह रहा है ":key
कुंजी होने के साथ, और 'val'
मान होने के साथ एक सहयोगी सरणी बनाएं"। यदि आप रूबीस्ट की तरह आवाज करना चाहते हैं, तो हम इसे "हैशरकेट" कहते हैं। (मान लीजिए या नहीं, यह रूबी में सबसे अजीब ऑपरेटर नहीं है; हमारे पास <=>
, या "स्पेसशिप ऑपरेटर" भी है।)
आप भ्रमित हो सकते हैं क्योंकि इसमें एक शॉर्टकट है जिसका आप उपयोग कर सकते हैं विधियों, यदि अंतिम पैरामीटर हैश है, तो आप squiggly ब्रैकेट ({}
) को छोड़ सकते हैं। तो render :partial => 'foo'
को कॉल करना मूल रूप से रेंडर विधि को कॉल कर रहा है, एक हैश में एक कुंजी/मूल्य जोड़ी के साथ गुजर रहा है। इस वजह से, आप अक्सर एक हैश को अंतिम पैरामीटर के रूप में देखते हैं, जिसमें एक गरीब व्यक्ति के वैकल्पिक पैरामीटर होते हैं (आप जावास्क्रिप्ट में भी ऐसा कुछ देखते हैं)।
रूबी में, कोई सामान्य शब्द स्थानीय चर होता है। इसलिए foo
एक विधि के अंदर विधि चर के लिए एक चर है। @
के साथ एक चर का उपसर्ग करने का मतलब है आवृत्ति को आवृत्ति के लिए। तो एक विधि में @foo
एक उदाहरण स्तर है।
@@
का अर्थ एक वर्ग चर है, जिसका अर्थ है कि @@
चर वर्ग के दायरे में हैं, और सभी उदाहरण हैं।
:
का अर्थ प्रतीक है। रुबी में एक प्रतीक एक विशेष प्रकार की स्ट्रिंग है जिसका तात्पर्य है कि इसका उपयोग एक कुंजी के रूप में किया जाएगा। यदि आप सी #/जावा से आ रहे हैं, तो वे एक enum के मुख्य भाग के उपयोग में समान हैं। कुछ अन्य मतभेद भी हैं, लेकिन मूल रूप से जब भी आप किसी भी प्रकार की कुंजी के रूप में स्ट्रिंग का इलाज करने जा रहे हैं, तो आप इसके बजाय एक प्रतीक का उपयोग करते हैं।
स्रोत
2010-08-21 19:40:19
उदाहरण 3 और 4 मेरे लिए भ्रमित हैं, मैं उदाहरण 3 और 4 में अंतर नहीं देख सकता। –
@ सिमॉन @@ x के बजाय @x के साथ उदाहरण # 4 चलाएं और आप अंतर देखेंगे –