বোঝার জন্য গুরুত্বপূর্ণ বিষয়টি হ'ল শ্রেণি পদ্ধতি হিসাবে এমন কোনও জিনিস নেই রুবিতে শ্রেণিক ।
একটি শ্রেণি পদ্ধতি সত্যই কেবল একটি সিঙ্গলটন পদ্ধতি। শ্রেণি পদ্ধতি সম্পর্কে বিশেষ কিছু নেই। প্রতিটি বস্তুর একক পদ্ধতি থাকতে পারে। আমরা কেবল তখন তাদের "শ্রেণি পদ্ধতি" বলি যখন বস্তুটি Class
কারণ হিসাবে "উদাহরণের একক পদ্ধতি"Class
" খুব দীর্ঘ এবং অনর্থক হয়।
অপেক্ষা কর আমি কি "সিঙ্গলটন পদ্ধতি" বলেছিলাম?
আরেকটি গুরুত্বপূর্ণ বিষয়টি বুঝতে হবে যে সিঙ্গলটন পদ্ধতি হিসাবে এমন কোনও জিনিস নেই রুবিতে ।
একটি সিঙ্গলটন পদ্ধতি সত্যই সিঙ্গলটন ক্লাসের একটি নিয়মিত বিরক্তিকর পুরানো উদাহরণ পদ্ধতি। সিঙ্গলটন পদ্ধতি সম্পর্কে বিশেষ কিছু নেই। এগুলি অন্যান্য উদাহরণ পদ্ধতির মতো কেবল উদাহরণ পদ্ধতি।
আসলে, রুবি কেবল আছে উদাহরণ পদ্ধতি instance কোনও ফাংশন, কোনও নির্মাণকারী, স্ট্যাটিক পদ্ধতি, কোনও শ্রেণি পদ্ধতি, কোনও মডিউল ফাংশন, কোনও সিঙ্গলটন পদ্ধতি নেই।
প্রশ্নটি নয় "এটি কি একটি শ্রেণিবদ্ধ পদ্ধতি, এটি কি একটি একক পদ্ধতি", বরং " এই পদ্ধতিটি কোন মডিউলে সংজ্ঞায়িত করা হয়েছে?"
"সিঙ্গেলটন পদ্ধতি" হ'ল প্রকৃত উদাহরণ পদ্ধতি যা একক ক্লাসে সংজ্ঞায়িত হয়। এর Singleton বর্গ ব্যবহার করার জন্য সিনট্যাক্স foo
হল
class << foo
end
এমন একটি পদ্ধতিও রয়েছে Object#singleton_class
যা কোনও অবজেক্টের সিঙ্গলটন ক্লাস প্রদান করে।
আমি কেন এত আক্রমণাত্মকভাবে এই বিষয়টি নিয়ে মাথা ঘামাচ্ছি যে প্রতিটি পদ্ধতি একটি উদাহরণ পদ্ধতি এবং সেই শ্রেণি পদ্ধতিগুলির অস্তিত্ব নেই? কারণ এর অর্থ রুবির অবজেক্ট মডেলটি মানুষ যেভাবে মনে করে তার চেয়ে অনেক সহজ! সর্বোপরি, আপনার প্রশ্নে, আপনি ইতিমধ্যে দেখিয়েছেন যে আপনি কীভাবে উলাম উদাহরণ পদ্ধতিগুলি জানেন তা আপনি জানেন কিন্তু আপনি কীভাবে ক্লাসের পদ্ধতিগুলি ব্যবহার করতে হয় তা জানেন না। কিন্তু, এটা ভুল! আপনি কীভাবে ক্লাসের পদ্ধতি ব্যবহার করতে পারেন তা জানেন, কারণ এগুলি কেবল উদাহরণ পদ্ধতি । আপনি যদি এই সত্যটি সঠিকভাবে শেখানো হত তবে আপনার কখনই এই প্রশ্নটি জিজ্ঞাসা করার দরকার পড়েনি!
একবার আপনি বুঝতে পারবেন যে প্রতিটি পদ্ধতি একটি উদাহরণ পদ্ধতি, এবং আমরা "সিঙ্গেলটন পদ্ধতি" যাকে বলি কেবল সিঙ্গলটন শ্রেণির উদাহরণ উদাহরণ, সমাধানটি পরিষ্কার হয়ে যায়:
singleton_class.alias_method :a_new_class_method, :a_class_method
দ্রষ্টব্য: যখন আমি উপরে লিখেছিলাম যে "এক্স" এর মতো কোনও জিনিস নেই, তখন আমার অর্থ হ'ল " রুবি ভাষায় এক্স এর মতো কোনও জিনিস নেই "। এর অর্থ এই নয় যে এই ধারণাগুলি রুবি সম্প্রদায়ের মধ্যে নেই ।
আমরা নিয়মিত "সিঙ্গেলটন পদ্ধতি" এবং "শ্রেণি পদ্ধতি" সম্পর্কে কথা বলি, কেবল "সিঙ্গলটন শ্রেণীর উদাহরণ পদ্ধতি" বা "কোনও বস্তুর সিঙ্গলটন শ্রেণীর উদাহরণ পদ্ধতিগুলির কথা বলা যা Class
শ্রেণীর উদাহরণ হিসাবে ঘটে তার চেয়ে সহজ" কারণ "। মত এমনকি পদ্ধতি Object#define_singleton_method
, Object#singleton_method
, Object#singleton_methods
, Module#private_class_method
, Module#public_class_method
, এবং Module#module_function
এ রুবি কোর গ্রন্থাগার। তয় এইটা সবসময়ের জন্য মনে রাখা উচিত যে যারা গুরুত্বপূর্ণ না ভাষা ধারণা। সেগুলি এমন সম্প্রদায় ধারণাগুলি যা কেবলমাত্র আমাদের মাথায় এবং কয়েকটি গ্রন্থাগার পদ্ধতির নামে বিদ্যমান ।
extend ClassMethods
সমাধান সম্পর্কে ভুলে গেছি । +1