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
বৈধ ধ্রুবক নাম তবে আমি তাদের পরিষ্কার করার উদ্দেশ্যে ব্যবহার করার বিরুদ্ধে সুপারিশ করব।