রুবি মেথড কী?
একটি মেথড হলো এক বা একাধিক লাইন রুবি কোড যা একটি নির্দিষ্ট উদ্দেশ্যে একসাথে গ্রুপ করা হয়েছে।
এই গ্রুপ করা কোডকে একটি নাম দেওয়া হয় যাতে আপনি কোডটি আবার লিখতে বা কপি-পেস্ট করতে না পারেই যেকোনো সময় ব্যবহার করতে পারেন।
একটি মেথডের উদ্দেশ্য হতে পারে:
- তথ্য প্রাপ্তি (GET information)।
- অবজেক্ট পরিবর্তন বা সৃষ্টি (CHANGE or CREATE objects)।
- ডেটা ফিল্টার ও ফরম্যাট (FILTER & FORMAT data)।
উদাহরণ ১:
Array অবজেক্টের size মেথড আপনাকে এলিমেন্টের কাউন্ট দেয় (তথ্য প্রাপ্তি)।
উদাহরণ ২:
pop মেথড অ্যারে থেকে লাস্ট এলিমেন্ট রিমুভ করে (অবজেক্ট পরিবর্তন)।
অবজেক্ট, ক্লাস এবং মেথডের মধ্যে সম্পর্ক বুঝলে সবকিছু বোঝা যাবে।

আরো শিখি!
মেথড কীভাবে ডিফাইন করবেন
রুবি প্রোগ্রামিং ল্যাঙ্গুয়েজে অনেক শক্তিশালী বিল্ট-ইন মেথড রয়েছে যা আপনি ব্যবহার করতে পারেন, কিন্তু আপনি নিজেরও তৈরি করতে পারেন।
কীভাবে?
আপনি def কীওয়ার্ড ব্যবহার করে আপনার নিজস্ব ইনস্ট্যান্স মেথড ডিফাইন করতে পারেন।
সিনট্যাক্সটি এখানে:
def gimme_bacon puts "Bacon plz." end
এখানে কী হচ্ছে?
defরুবির সিনট্যাক্সের অংশ, এটিতে বলে যে আমরা একটি মেথডdefine করতে চাইgimme_baconমেথডের নামputs "Bacon plz."মেথডের বডিendমেথড ডেফিনিশনের শেষ চিহ্নিত করে
একটি মেথড ডিফাইন করা শুধু রুবিকে বলে যে আপনি এটি তৈরি করতে চান।
আপনি যদি এটি ব্যবহার করতে চান তবে আপনাকে মেথডটি কল করতে হবে।
রুবিতে মেথড কীভাবে কল করবেন
রুবিতে, যখন আমরা একটি মেথড ব্যবহার করি, আমরা বলি যে আমরা এটিকে কল করছি।
আপনি প্রায়শই "method call" শুনবেন, অথবা আপনি যদি কেউ Object-Oriented পুরিস্টের সাথে কাজ করেন, তবে আপনি শুনতে পারেন "আপনি একটি মেসেজ পাঠাচ্ছেন"।
যে কোনো ভাবেই…
একটি মেথড ব্যবহার করার উদাহরণ দেখা যাক।
এখানে আপনার জন্য:
gimme_bacon
এটি প্রিন্ট করে:
"Bacon plz."
আপনি অবজেক্টের ওপর মেথড কল করতে পারেন।
উদাহরণ:
n = [1,2,3] n.size # 3
এই n.size অবজেক্ট n এর ওপর size মেথড কল করছে, যা হচ্ছে একটি Array।
ফলাফল?
আমরা অ্যারের সাইজ পাই।
কোন মেথডগুলো উপলব্ধ?
এটি নির্ভর করে আপনি যে অবজেক্টের ওপর মেথড কল করছেন তার ক্লাসের ওপর।
একটি অ্যারে একটি হ্যাশের চেয়ে ভিন্ন মেথড রাখবে।
আপনি রুবি ডকুমেন্টেশন চেক করে একটি দেওয়া ক্লাসের মেথড লিস্ট পেতে পারেন।
মেথড থেকে ভ্যালু রিটার্ন করা
রুবিতে একটি কী কনসেপ্ট হলো সকল মেথড একটি ভ্যালু রিটার্ন করে।
আমি ব্যাখ্যা করছি!
একটি মেথড কল করার ফলস্বরূপ, আপনি কিছু ফিরে পান।
এই "কিছু" যা আপনি পান সেটি আপনার মেথড ডেফিনিশনের লাস্ট এক্সপ্রেশন থেকে আসে।
আমি কী বোঝাতে চাই:
def number_one 1 end number_one # 1
আরেক উদাহরণ:
def add(x,y) x + y end add(5, 6) # 11
আমরা এটাকে "ইমপ্লিসিট রিটার্ন" বলি, শুধু একটি ফ্যান্সি নাম "লাস্ট জিনিসটি অটোমেটিক্যালি রিটার্ন করো" এর জন্য।
অতিরিক্তভাবে:
আপনি রুবিকে return কীওয়ার্ড দিয়ে কিছু রিটার্ন করতে বলতে পারেন।
def two return 2 end # 2
লক্ষ্য করুন যে আপনার মেথড রান করা বন্ধ কর देता যখন আপনি return ব্যবহার করেন।
আপনি এটিকে আপনার কোডে আর্লি রিটার্নের জন্য, বা একটি লুপ এক্সিট করার জন্য ব্যবহার করেন।
আমার মেথড নামের মধ্যে প্রশ্নচিহ্ন কেন রয়েছে?
আপনি কিছু স্ট্রেইঞ্জ রুবি মেথড খুঁজে পেতে পারেন।
নামগুলো এরকম:
empty?sort!title=
এই সবই বৈধ মেথড নাম।
প্রশ্নচিহ্ন, এক্সক্লামেশন مار্ক, বা ইকুয়ালস সাইন কী বোঝায়?
এগুলো রুবি কমিউনিটির কনভেনশন।
ব্যাখ্যা:
- একটি প্রশ্নচিহ্ন মেথড, যাকে প্রিডিকেট মেথডও বলা হয়, সেটি
trueবাfalseরিটার্ন করার উদ্দেশ্যে থাকা উচিত - একটি এক্সক্লামেশন مار্ক মেথড বলে যে এটি নন-এক্সক্লামেশন ভার্সন থেকে ভিন্ন কিছু করবে। সাধারণত এটি অবজেক্টটিকে যেকোনোভাবে পরিবর্তন করার সাথে জড়িত, যেমন এলিমেন্ট যোগ/ডিলিট করা। এটিকে "ব্যাং মেথড"-ও বলা হয়।
- ইকুয়ালস সাইন মেথড মানে অ্যাসাইনমেন্ট। এটি একটি ইনস্ট্যান্স ভেরিয়েবলে ভ্যালু অ্যাসাইন করতে ব্যবহৃত হয়
এই কনভেনশনগুলো ল্যাঙ্গুয়েজ দ্বারা এনফোর্স করা হয় না।
কিন্তু…
আপনি যদি এগুলো ফলো করেন, তবে আপনি আরও রুবি-লাইক কোড লিখতে পারবেন!
সারসংক্ষেপ
আপনি রুবি মেথডের শক্তি, কীভাবে ডিফাইন করবেন, ব্যবহার করবেন এবং সঠিক কনভেনশন ফলো করবেন সেটি শিখেছেন।
এখন আপনার পালা এটি প্র্যাকটিসে আনার 🙂
পড়ার জন্য ধন্যবাদ!