classएक कीवर्ड है जो एक नए वर्ग को परिभाषित करने के लिए उपयोग किया जाता है। चूंकि यह एक आरक्षित कीवर्ड है, आप इसे एक चर नाम के रूप में उपयोग करने में सक्षम नहीं हैं। आप चर नाम के रूप में रूबी के कीवर्ड के किसी भी उपयोग नहीं कर सकते, तो आप नामित चरों के लिए सक्षम नहीं होगा defया moduleया ifया end, आदि - classकोई अलग है।
उदाहरण के लिए, निम्नलिखित पर विचार करें:
def show_methods(class)
puts Object.const_get(class).methods.inspect
end
show_methods "Kernel"
जब आप classएक चर नाम के रूप में उपयोग नहीं कर सकते हैं, तो इस परिणाम को एक त्रुटि में चलाने की कोशिश की जा रही है ।
test.rb:1: syntax error, unexpected kCLASS, expecting ')'
def show_methods(class)
^
test.rb:2: syntax error, unexpected ')'
puts Object.const_get(class).methods.inspect
इसे ठीक करने के लिए, हम klassइसके बजाय पहचानकर्ता का उपयोग करेंगे । यह विशेष नहीं है, लेकिन यह पारंपरिक रूप से एक चर नाम के रूप में उपयोग किया जाता है जब आप किसी वर्ग या वर्ग के नाम के साथ काम कर रहे होते हैं। यह ध्वन्यात्मक रूप से समान है, लेकिन चूंकि यह एक आरक्षित कीवर्ड नहीं है, रूबी के पास इसके साथ कोई समस्या नहीं है।
def show_methods(klass)
puts Object.const_get(klass).methods.inspect
end
show_methods "Kernel"
आउटपुट, जैसा कि अपेक्षित है, है
["method", "inspect", "name", "public_class_method", "chop!"...
आप किसी भी (गैर-आरक्षित) चर नाम का उपयोग कर सकते हैं, लेकिन समुदाय ने उपयोग करने के लिए ले लिया है klass। इसका कोई विशेष जादू नहीं है - इसका अर्थ है "मैं यहाँ 'नाम' वर्ग का उपयोग करना चाहता था, लेकिन मैं नहीं कर सकता, क्योंकि यह एक आरक्षित खोजशब्द है"।
एक साइड नोट पर, चूंकि आपने इसे गलत तरीके से टाइप किया है, इसलिए यह रूबी के मामले में ध्यान देने योग्य है। एक बड़े अक्षर से शुरू होने वाले स्तन निरंतर होते हैं। पिकाक्से के माध्यम से :
नाम अक्षरों के बाद एक अपरकेस अक्षर के साथ एक निरंतर नाम शुरू होता है। वर्ग के नाम और मॉड्यूल के नाम स्थिरांक हैं, और निरंतर नामकरण सम्मेलनों का पालन करते हैं। अधिवेशन द्वारा, निरंतर चर को सामान्य रूप से बड़े अक्षरों और अंडरस्कोर का उपयोग करके वर्तनी दी जाती है।
इस प्रकार, सही वर्तनी है classऔर klass, के बजाय Classऔर Klass। उत्तरार्द्ध स्थिरांक होगा, और दोनों वैध Classऔर Klassनिरंतर नाम हैं, लेकिन मैं स्पष्टता प्रयोजनों के लिए उनका उपयोग करने के खिलाफ सिफारिश करूंगा।