প্রথমত, একটি ছোট সংজ্ঞা: একটি সিঙ্গলটন পদ্ধতি এমন একটি পদ্ধতি যা কেবলমাত্র একটিমাত্র বস্তুর জন্য সংজ্ঞায়িত হয়। উদাহরণ:
irb(main):001:0> class Foo; def method1; puts 1; end; end
=> nil
irb(main):002:0> foo = Foo.new
=> #<Foo:0xb79fa724>
irb(main):003:0> def foo.method2; puts 2; end
=> nil
irb(main):004:0> foo.method1
1
=> nil
irb(main):005:0> foo.method2
2
=> nil
irb(main):006:0> other_foo = Foo.new
=> #<Foo:0xb79f0ef4>
irb(main):007:0> other_foo.method1
1
=> nil
irb(main):008:0> other_foo.method2
NoMethodError: undefined method `method2' for #<Foo:0xb79f0ef4>
from (irb):8
তাত্ক্ষণিক পদ্ধতিগুলি কোনও শ্রেণির পদ্ধতি (যেমন শ্রেণীর সংজ্ঞাতে সংজ্ঞায়িত)। ক্লাসের পদ্ধতিগুলি ক্লাসের Class
উদাহরণে সিঙ্গলটন পদ্ধতি - সেগুলি শ্রেণীর সংজ্ঞায়িত হয় না। পরিবর্তে, তারা বস্তুর একক ক্লাসে সংজ্ঞায়িত করা হয় ।
irb(main):009:0> Foo.method_defined? :method1
=> true
irb(main):010:0> Foo.method_defined? :method2
=> false
আপনি সিনট্যাক্সের সাহায্যে একটি সামগ্রীর সিঙ্গলটন শ্রেণি খুলুন class << obj
। এখানে, আমরা দেখতে পাচ্ছি যে এই সিঙ্গলটন ক্লাসটি যেখানে সিঙ্গলটন পদ্ধতিগুলি সংজ্ঞায়িত করা হয়েছে:
irb(main):012:0> singleton_class = ( class << foo; self; end )
=> #<Class:#<Foo:0xb79fa724>>
irb(main):013:0> singleton_class.method_defined? :method1
=> true
irb(main):014:0> singleton_class.method_defined? :method2
=> true
irb(main):015:0> other_singleton_class = ( class << other_foo; self; end )
=> #<Class:#<Foo:0xb79f0ef4>>
irb(main):016:0> other_singleton_class.method_defined? :method1
=> true
irb(main):017:0> other_singleton_class.method_defined? :method2
=> false
সুতরাং কোনও বস্তুর সাথে সিঙ্গেলটন পদ্ধতি যুক্ত করার বিকল্প উপায়টি হ'ল বস্তুর সিঙ্গলটন শ্রেণীর উন্মুক্ত সাথে তাদের সংজ্ঞা দেওয়া:
irb(main):018:0> class << foo; def method3; puts 3; end; end
=> nil
irb(main):019:0> foo.method3
3
=> nil
irb(main):022:0> Foo.method_defined? :method3
=> false
সংক্ষেপে:
- পদ্ধতিগুলি সর্বদা একটি শ্রেণীর অন্তর্ভুক্ত থাকে (বা: কোনও শ্রেণির উদাহরণ পদ্ধতিতে)
- সাধারণ পদ্ধতিগুলি শ্রেণীর অন্তর্ভুক্ত যার মধ্যে তারা সংজ্ঞায়িত হয় (যেমন শ্রেণীর উদাহরণ পদ্ধতিগুলি)
- ক্লাস পদ্ধতিগুলি কেবলমাত্র সিঙ্গলটন পদ্ধতি
Class
- কোনও বস্তুর একক পদ্ধতিগুলি বস্তুর শ্রেণির উদাহরণ পদ্ধতি নয়; বরং তারা হ'ল বস্তুর একক শ্রেণীর উদাহরণ।