কম্পিউটার টিউটোরিয়াল

রুবির Initialize মেথড মাস্টার করুন: একটি স্টেপ-বাই-স্টেপ গাইড

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 মেথডের সাথে সম্পর্ক, এবং রুবিতে অবজেক্ট ক্রিয়েশনের বেসিক সম্পর্কে শিখেছেন।

রুবিতে অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং-এর এই ইন্ট্রো পড়ে শিখতে থাকুন।

পড়ার জন্য ধন্যবাদ!


  1. রুবি মাস্টারিং: মেথড এলিয়াস তৈরি করার জন্য Alias কিওয়ার্ড ব্যবহার

  2. রুবি Enumerable মেথড মাস্টারিং: Any, All, None এবং One

  3. রুবির grep মেথড মাস্টারিং: কোড উদাহরণসহ একটি ব্যবহারিক গাইড

  4. রুবির Map মেথড মাস্টারিং: উদাহরণসহ একটি ব্যবহারিক গাইড