আপনার কোডটি পড়ার সাথে কারও কাছে আপনার অভিপ্রায়টি যোগাযোগ করতে আপনি বিভিন্ন অ্যাক্সেসর ব্যবহার করতে পারেন এবং ক্লাসগুলি লিখতে আরও সহজ করে তুলতে পারেন যা তাদের পাবলিক এপিআই বলা যাই হোক না কেন সঠিকভাবে কাজ করবে।
class Person
attr_accessor :age
...
end
এখানে, আমি দেখতে পাচ্ছি যে আমি উভয়ই বয়স পড়তে এবং লিখতে পারি।
class Person
attr_reader :age
...
end
এখানে, আমি দেখতে পাচ্ছি যে আমি কেবল বয়সটি পড়তে পারি। কল্পনা করুন যে এটি এই শ্রেণীর নির্মাতা দ্বারা সেট করা হয়েছে এবং তার পরে স্থির থাকে। যদি বয়সের জন্য কোনও মিউটর (লেখক) থাকতেন এবং শ্রেণিটি ধরে নেওয়া হয় যে বয়সটি একবার নির্ধারণ করা হয়েছিল, পরিবর্তিত হয় না, তবে কোডটি সেই মিউটরকে কল করার ফলে কোনও বাগ হতে পারে।
কিন্তু পর্দার আড়ালে কী ঘটছে?
আপনি যদি লিখেন:
attr_writer :age
এটি অনুবাদ করা হয়:
def age=(value)
@age = value
end
আপনি যদি লিখেন:
attr_reader :age
এটি অনুবাদ করা হয়:
def age
@age
end
আপনি যদি লিখেন:
attr_accessor :age
এটি অনুবাদ করা হয়:
def age=(value)
@age = value
end
def age
@age
end
এটি জানার জন্য, এখানে অন্যভাবে চিন্তা করার উপায় রয়েছে: যদি আপনার কাছে অ্যাটর্নি _... সহায়তাকারী না থাকে এবং নিজেই অ্যাকসেসরগুলি লিখতে হয়, আপনি কি আপনার শ্রেণীর প্রয়োজনের চেয়ে আরও কোনও এক্সেসর লিখবেন? উদাহরণস্বরূপ, বয়স যদি কেবল পড়ার প্রয়োজন হয়, আপনি কি কোনও পদ্ধতি এটি লেখার অনুমতি দিয়ে লিখবেন?