ইনস্ট্যান্স ভ্যারিয়েবল সম্পর্কে
মূল বিষয়গুলো:
- কোনো অবজেক্ট ইনস্ট্যান্স তৈরি করতে যখন একটি ক্লাসের
.new মেথড কল করা হয়, তখন ইনস্ট্যান্সের স্টেট ইনিশিয়ালাইজ করার জন্য .initialize মেথডকে সব আর্গুমেন্ট পাস করা হয়।
- ইনস্ট্যান্স ভ্যারিয়েবলের নামের শুরুতে
@ বসে।
- স্পষ্টভাবে সেট করা না হওয়া পর্যন্ত ইনস্ট্যান্স ভ্যারিয়েবলগুলোর মান ডিফল্টভাবে
nil থাকে।
- ইনস্ট্যান্স ভ্যারিয়েবল ডিফল্টভাবে প্রাইভেট, আর এগুলো গেটার ও সেটারের মাধ্যমে নিয়ন্ত্রণ করা উচিত।
class Backpack
initialize(owner)
@owner = owner
end
def owner
@owner
end
def owner=(new_owner)
@owner = new_owner
end
end
- শেষে
= দেওয়া নামের মেথডগুলোকে Ruby সেটার হিসেবে চিনে নেয়, আর এগুলো দিয়ে অ্যাসাইনমেন্ট সিনট্যাক্সের সিনট্যাকটিক "সুগার" ব্যবহার করা যায়, যেমন Backpack.new("Sven").owner = "Ayah"।
খেয়াল করুন, আসল মেথডের নাম owner= হলেও owner আর =-এর মাঝে একটি স্পেস আছে।
-
attr_reader, attr_writer আর attr_accessor মেথড দিয়ে গেটার ও সেটার তৈরি করা যায়:
-
attr_reader: তালিকায় থাকা সিম্বলগুলোর জন্য গেটার তৈরি করে
-
attr_writer: তালিকায় থাকা সিম্বলগুলোর জন্য সেটার তৈরি করে
-
attr_accessor: তালিকায় থাকা সিম্বলগুলোর জন্য গেটার ও সেটার তৈরি করে
class Backpack
attr_accessor :owner
initialize(owner)
@owner = owner
end
end
- সরাসরি ইনস্ট্যান্স ভ্যারিয়েবলের বদলে গেটার ও সেটার কেন ব্যবহার করবেন?
- আগের উদাহরণে যদি কোনো বানান ভুল থাকে, যেমন
@ownar (আমরা এগুলোকে "টাইপো" বলি), তাহলে প্রোগ্রামটি চুপচাপ ব্যর্থ হবে, আর সিস্টেমে একটি bug ঢুকে পড়তে পারে।
- গেটার ও সেটার এটা স্পষ্ট করে দেয়, আর কোনো টাইপো হলে একটি এরর তৈরি হবে।
তথ্যসূত্র
অবজেক্ট ইনস্ট্যান্স ইনিশিয়ালাইজ করা
ইনস্ট্যান্স ভ্যারিয়েবল