বর্গ সংজ্ঞা ব্লকের ভিতরে ইনস্ট্যান্স পদ্ধতিগুলি সংজ্ঞায়িত করা হয়। শ্রেণীর পদ্ধতিগুলি কোনও শ্রেণীর একক ক্লাসে সিঙ্গলটন পদ্ধতি হিসাবে সংজ্ঞায়িত হয়, এটি অনানুষ্ঠানিকভাবে "মেটাক্লাস" বা "আইজেনক্লাস" নামেও পরিচিত। private
কোনও কীওয়ার্ড নয়, তবে একটি পদ্ধতি ( মডিউল # ব্যক্তিগত )।
এটি কোনও পদ্ধতিতে কল self#private
/ A#private
যা "টগল" করে সমস্ত আগমনী পদ্ধতি পদ্ধতির সংজ্ঞাগুলির জন্য টগল না করা পর্যন্ত ব্যক্তিগত অ্যাক্সেসটিকে চালু করে:
class A
private
def instance_method_1; end
def instance_method_2; end
# .. and so forth
end
যেমন পূর্বে উল্লেখ করা হয়েছে, শ্রেণি পদ্ধতিগুলি সত্যই সিঙ্গলটন পদ্ধতিতে সিঙ্গলটন শ্রেণিতে সংজ্ঞায়িত হয়।
def A.class_method; end
বা এ এর বেনামী, সিঙ্গলটন শ্রেণীর সংজ্ঞা বডি খুলতে একটি বিশেষ বাক্য গঠন ব্যবহার করে:
class << A
def class_method; end
end
"বার্তা প্রাইভেট" - স্ব - অভ্যন্তরের class A
ক্লাস অবজেক্ট এ এর স্বীকৃতি class << A
হ'ল ব্লকের অভ্যন্তরে স্ব এক অন্য বস্তু, সিঙ্গলটন শ্রেণি।
নিম্নলিখিত উদাহরণটি বাস্তবে কল হিসাবে দুটি পৃথক প্রাপক বা লক্ষ্যবস্তু ব্যবহার করে প্রাইভেট নামে দুটি পৃথক পদ্ধতি কল করে। প্রথম অংশে, আমরা একটি ব্যক্তিগত উদাহরণ পদ্ধতি ("ক্লাস এ") সংজ্ঞায়িত করি, পরে আমরা একটি প্রাইভেট ক্লাস পদ্ধতি সংজ্ঞায়িত করি (আসলে এটি এ এর সিঙ্গলটন শ্রেণীর অবজেক্টে একটি সিঙ্গলটন পদ্ধতি)।
class A
# self is A and private call "A.private()"
private def instance_method; end
class << self
# self is A's singleton class and private call "A.singleton_class.private()"
private def class_method; end
end
end
এখন, এই উদাহরণটি কিছুটা আবার লিখুন:
class A
private
def self.class_method; end
end
আপনি [যে রুবি ভাষার ডিজাইনাররা] ভুলটি দেখতে পাচ্ছেন? আপনি এ এর আগত উদাহরণ পদ্ধতিগুলির জন্য ব্যক্তিগত অ্যাক্সেসে টগল করুন, তবে একক ক্লাস, সিঙ্গলটন শ্রেণিতে একটি সিঙ্গলটন পদ্ধতি ঘোষণা করতে এগিয়ে যান।