initialize মেথড রুবিতে অবজেক্ট-ক্রিয়েশন প্রসেসের অংশ এবং এটি একটি অবজেক্টের প্রাথমিক মান সেট করতে দেয়।
অন্য প্রোগ্রামিং ল্যাঙ্গুয়েজে একে "কনস্ট্রাক্টর" বলা হয়।
উদাহরণস্বরূপ:
ধরুন আপনার কাছে একটি Point ক্লাস আছে, এই পয়েন্টকে দুটি কো-অর্ডিনেট দরকার, x এবং y।
আপনি এই মানগুলো অবজেক্টে কীভাবে পাস করবেন?
এভাবে:
Point.new(10, 20)
new মেথড হলো রুবিতে ক্লাস থেকে নতুন অবজেক্ট তৈরি করার পদ্ধতি, Point বা অন্য যেকোনো ক্লাস যা আপনার অ্যাক্সেসIBLE।
New এবং Initialize-এর সম্পর্ক
এই দুটি আর্গুমেন্ট, 10 এবং 20 লক্ষ্য করুন?
এখানে আমরা ফিরে যাই initialize মেথডে।
আপনি যদি new-এ আর্গুমেন্ট পাস করার চেষ্টা করেন এবং initialize ডিফাইন না করেন তবে আপনি একটি এরর পাবেন:
ArgumentError: wrong number of arguments (2 for 0)
কারণ যখন আপনি new কল করেন, রুবি initialize কল করে!
আপনাকে এটি দরকার:
class Point def initialize(x, y) end end
এখন আপনি দুটি আর্গুমেন্ট দিয়ে Point অবজেক্ট তৈরি করতে পারেন।
সুতরাং initialize-র পুরো পয়েন্ট হলো আপনাকে আর্গুমেন্ট সহ অবজেক্ট তৈরি করতে দেওয়া।
আর্গুমেন্টগুলো সংরক্ষণ করা
initialize-এ পাস করা আর্গুমেন্টগুলো অটোমেটিক্যালি কোথাও সংরক্ষিত হয় না।
আপনাকে এটি ইনস্ট্যান্স ভেরিয়েবল ব্যবহার করে করতে হবে:
class Point def initialize(x, y) @x = x @y = y end end
এটি x এবং y-এর মান @x এবং @y ইনস্ট্যান্স ভেরিয়েবলে অ্যাসাইন করবে যাতে আপনি পরে সেগুলো অ্যাক্সেস করতে পারেন।
initialize-এর সম্পর্কে কয়েকটি পয়েন্ট নোট করুন:
- আপনি অপশনাল এবং ডিফল্ট আর্গুমেন্ট ডিফাইন করতে পারেন
- এই মেথডের ভিতরে
returnব্যবহার করলে কোনো মানে নেই কারণ এটি স্পেশাল এবং এটি সবসময় একটি নতুন অবজেক্ট রিটার্ন করবে - যদি আপনার ক্লাস কোনো আর্গুমেন্ট দরকার না করে তবে
initializeডিফাইন করা জরুরি নয়
আপনি initialize-এর ভিতরে অন্যান্য মেথড কল করতে পারেন, কিন্তু আপনি সেখানে অবজেক্টকে ব্যবহার করার জন্য প্রস্তুত করার বাইরে কোনো রিয়েল কাজ করবেন না।
উদাহরণস্বরূপ:
আপনার ক্লাস যদি GitHub API-এর সাথে কাজ করার জন্য হয়, তবে আপনি API-র সকল পসিবল রিকোয়েস্ট আগে থেকে প্রি-লোড করতে চাবেন না।
আপনি শুধু API কীটি একটি ইনস্ট্যান্স ভেরিয়েবলে সংরক্ষণ করতে চাবেন।
বা আপনার ক্লাস যেসব ডেটা দরকার।
হ্যাশ এবং অন্যান্য বিল্ট-ইন অবজেক্ট ইনিশিয়ালাইজ করা
হ্যাশের মত বিল্ট-ইন অবজেক্টগুলোর new কল করার বাশিতে তৈরি ও ইনিশিয়ালাইজ করার স্পেশাল পদ্ধতি রয়েছে।
হ্যাশ তৈরির পদ্ধতি:
h = Hash.new h = Hash['a', 1] h = {}
স্ট্রিং তৈরির পদ্ধতি:
s = String.new s = "" s = %Q()
অ্যারে তৈরির পদ্ধতি:
a = Array.new(5) a = %w(a b c) a = []
%w স্ট্রিংয়ের একটি অ্যারে তৈরি করে।
সারসংক্ষেপ
আপনি রুবির initialize মেথড, এর new মেথডের সাথে সম্পর্ক, এবং রুবিতে অবজেক্ট ক্রিয়েশনের বেসিক সম্পর্কে শিখেছেন।
রুবিতে অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং-এর এই ইন্ট্রো পড়ে শিখতে থাকুন।
পড়ার জন্য ধন্যবাদ!