এই নিবন্ধটি অ্যাট্রিবিউট অ্যাক্সেসর (attr_accessor) সম্পর্কে ) রুবিতে।
আপনি যদি তাড়াহুড়ো করেন তবে নিচে স্ক্রোল করুন।
কারণ আমি ব্যাখ্যা করে শুরু করতে চাই:
কেন আমরা অ্যাট্রিবিউট অ্যাক্সেসর ব্যবহার করি !
ধরা যাক যে আপনার কাছে উদাহরণ ভেরিয়েবল সহ একটি ক্লাস আছে এবং আপনি সেগুলিকে বাইরের বিশ্বের কাছে প্রকাশ করতে চান৷
কিভাবে?
আপনাকে একটি পদ্ধতি নির্ধারণ করতে হবে।
শুধুমাত্র পদ্ধতি ইনস্ট্যান্স ভেরিয়েবল অ্যাক্সেস করতে পারে।
কেন?
কারণ আপনি এটি না করলে আপনি একটি ত্রুটি পাবেন।
এখানে একটি উদাহরণ আছে :
class Food
def initialize(protein)
@protein = protein
end
end
bacon = Food.new(21)
bacon.protein
# NoMethodError: undefined method `protein'
NoMethodError আপনি যখন protein এর মান জিজ্ঞাসা করেন তখন আপনি যে ত্রুটিটি পান৷ সঠিক সেটআপ ছাড়া।
সমাধান কি?
আপনি আপনার নিজস্ব পদ্ধতি এভাবে সংজ্ঞায়িত করতে পারেন :
class Food
def protein
@protein
end
end
bacon.protein
# 21
অন্যান্য OOP ভাষায় এটি একটি "গেটার" পদ্ধতি হিসাবে পরিচিত। আপনি একটি পদ্ধতি সংজ্ঞায়িত করেন যা আপনাকে ইনস্ট্যান্স ভেরিয়েবলের মান দেয়।
আপনি মান পরিবর্তন করতে চাইতে পারেন।
এর জন্য, আপনার অন্য পদ্ধতির প্রয়োজন হবে , এই মত:
class Food
def protein=(value)
@protein = value
end
end
bacon.protein = 25
কল্পনা করুন যে আপনি বস্তুতে একটি পোর্টাল খুলছেন যাতে আপনি মান পরিবর্তন করতে পারেন।
এটা কি করছে।
এখন :
এই ধরনের পদ্ধতি সংজ্ঞায়িত করার একটি ভাল উপায় আছে?
কোন ধরনের শর্টকাট পছন্দ করেন?
হ্যাঁ!
আছে 🙂
সেখানেই attr_accessor আসে।
রুবি attr_accessor উদাহরণ
আপনি রুবিকে attr_accessor দিয়ে আপনার জন্য এই পদ্ধতিগুলি তৈরি করতে বলতে পারেন .
এখানে কিভাবে :
class Food attr_accessor :protein def initialize(protein) @protein = protein end end
এই লাইনটি দেখুন :
attr_accessor :protein
এটি একটি রুবি পদ্ধতি যা আপনার জন্য অন্যান্য পদ্ধতি তৈরি করে৷
কি পদ্ধতি?
এই উদাহরণের জন্য, এটি তৈরি করে:
proteinprotein=
এই একই পদ্ধতি যা আমরা আগে তৈরি করেছি...
কিন্তু এখন আপনাকে সেগুলি টাইপ করতে হবে না৷
৷এটি একটি শর্টকাট!
attr_accessor বনাম attr_reader
attr_accessor ছাড়াও , আপনার কাছে অন্যান্য ধরণের অ্যাক্সেসরও রয়েছে৷
তাদের মধ্যে তিনটি সঠিক হতে হবে :
attr_accessorattr_readerattr_writer
তাদের মধ্যে পার্থক্য কি?
ঠিক আছে, attr_accessor রিডার এবং WRITER উভয় পদ্ধতিই তৈরি করে।
attr_readerশুধুমাত্র পাঠক তৈরি করে।-
attr_writerশুধুমাত্র লেখক তৈরি করে।
অন্য কথায় :
attr_reader সহ আপনি শুধুমাত্র মান পড়তে পারেন, কিন্তু এটি পরিবর্তন করতে পারবেন না। attr_writer সহ আপনি শুধুমাত্র একটি মান পরিবর্তন করতে পারেন কিন্তু এটি পড়তে পারবেন না।
মাল্টিপল ইনস্ট্যান্স ভেরিয়েবল
একাধিক অ্যাট্রিবিউট পদ্ধতি সংজ্ঞায়িত করতে চান?
আপনি এটা করতে পারেন।
কিন্তু আপনাকে সঠিক সিনট্যাক্স ব্যবহার করতে হবে।
এরকম :
attr_reader :name, :value, :ready?
আপনি যত খুশি তৈরি করতে পারেন।
ভিডিও টিউটোরিয়াল দেখুন
সারাংশ
আপনি রুবিতে অ্যাট্রিবিউট অ্যাক্সেসর সম্পর্কে শিখেছেন! ৩টি পদ্ধতির একটি সেট (attr_accessor , attr_writer &attr_reader ) ক্লাসের বাইরে থেকে ইনস্ট্যান্স ভেরিয়েবল অ্যাক্সেস এবং সেট করতে।
এখন অনুশীলন করার সময়।