ইনিশিয়ালাইজ পদ্ধতিটি রুবিতে অবজেক্ট তৈরির প্রক্রিয়ার অংশ এবং এটি আপনাকে একটি বস্তুর জন্য প্রাথমিক মান সেট করতে দেয়।
অন্যান্য প্রোগ্রামিং ভাষায় তারা একে "কনস্ট্রাক্টর" বলে।
উদাহরণস্বরূপ :
ধরা যাক যে আপনার একটি Point
আছে ক্লাস, এই বিন্দুতে দুটি স্থানাঙ্ক প্রয়োজন, x
&y
.
কিভাবে আপনি বস্তুর মধ্যে এই মান পাস করতে যাচ্ছেন?
এরকম :
Point.new(10, 20)
new
পদ্ধতি হল কিভাবে আপনি Point
এর মত ক্লাস থেকে রুবিতে নতুন বস্তু তৈরি করেন , অথবা অন্য কোন ক্লাস যা আপনার অ্যাক্সেস আছে।
নতুন এবং সূচনা করার মধ্যে সম্পর্ক
এই দুটি আর্গুমেন্ট লক্ষ্য করুন, 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
-এর ভিতরে অন্যান্য পদ্ধতিতে কল করতে পারেন , কিন্তু ব্যবহার করার জন্য অবজেক্ট প্রস্তুত করার জন্য যা প্রয়োজন তার বাইরে আপনি এখানে কোনো বাস্তব কাজ করতে চান না।
উদাহরণস্বরূপ :
যদি আপনার ক্লাসটি গিথুব 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
স্ট্রিংগুলির একটি অ্যারে তৈরি করে৷
সারাংশ
আপনি রুবি ইনিশিয়ালাইজ পদ্ধতি সম্পর্কে শিখেছেন, এটি কীভাবে new
এর সাথে সম্পর্কিত পদ্ধতি, এবং রুবিতে বস্তু তৈরির মূল বিষয়।
রুবিতে অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং-এর এই ভূমিকাটি পড়ে শিখতে থাকুন।
পড়ার জন্য ধন্যবাদ!