এই অনুশীলনীতে Ruby-এর মৌলিক গঠন উপাদানগুলো শেখানো হবে। এতে অনেকগুলো বিষয় আছে, তবে প্রথমে কঠিন মনে হলেও চিন্তার কিছু নেই, ট্র্যাকটি যত এগোবে আমরা সবকিছু আরও অনেক গভীরে গিয়ে দেখব।
Ruby সম্পর্কে বোঝার জন্য সবচেয়ে গুরুত্বপূর্ণ একটি বিষয় হলো এটি একটি অবজেক্ট-ওরিয়েন্টেড ভাষা, আর Ruby-তে সবকিছুই একটি অবজেক্ট। সংখ্যা, স্ট্রিং, অ্যারে, সবই অবজেক্ট।
আমরা সাধারণত অবজেক্টকে নাম দিয়ে ব্যবহার করি, সেটা ভ্যারিয়েবল হোক বা কনস্ট্যান্ট।
ভ্যারিয়েবল সবসময় স্নেক কেসে লেখা হয়।
একটি ভ্যারিয়েবল তার পুরো জীবনকালে বিভিন্ন অবজেক্টকে নির্দেশ করতে পারে।
যেমন, = অপারেটর দিয়ে my_first_variable অনেকবার ডিফাইন ও আবার ডিফাইন করা যায়:
my_first_variable = 1
my_first_variable = "Some string"
my_first_variable = SomeComplexObject.new
কনস্ট্যান্ট অবশ্য একবারই অ্যাসাইন করার জন্য। এগুলো অবশ্যই বড় হাতের অক্ষর দিয়ে শুরু হতে হবে এবং সাধারণত সব বড় হাতের অক্ষরে লেখা হয়, শব্দগুলো আন্ডারস্কোর দিয়ে আলাদা করা থাকে। যেমন:
MY_FIRST_CONSTANT = 10
# Redefining not allowed
# MY_FIRST_CONSTANT = "Some String"
Ruby ক্লাসে সাজানো।
ক্লাস ডিফাইন করা হয় class কিওয়ার্ড দিয়ে, তার পরে ক্লাসের নাম লেখা হয়।
অবজেক্ট সাধারণত .new মেথড দিয়ে ক্লাস ইনস্ট্যান্টিয়েট করে তৈরি করা হয়।
যেমন:
# Define the class
class Calculator
#...
end
# Create an instance of it and assign it to a variable
my_first_calc = Calculator.new
কার্যকারিতার এককগুলো মেথডে আবদ্ধ থাকে, অনেকটা অন্য ভাষার ফাংশন-এর মতো।
একটি মেথড পজিশনাল আর্গুমেন্ট বা কিওয়ার্ড আর্গুমেন্ট (যেগুলো : সিনট্যাক্স দিয়ে ডিফাইন ও কল করা হয়) দিয়ে ডিফাইন করা যায়, আবার একেবারেই কোনো আর্গুমেন্ট নাও থাকতে পারে।
মেথড হয় সর্বশেষ মূল্যায়িত স্টেটমেন্টের ফলাফল অন্তর্নিহিতভাবে রিটার্ন করে, নয়তো return কিওয়ার্ড দিয়ে স্পষ্টভাবে একটি অবজেক্ট রিটার্ন করতে পারে।
class Calculator
# Positional arguments
def add(num1, num2)
return num1 + num2 # Explicit return
end
# Keyword arguments
def multiply(num1:, num2:)
num1 * num2 # Implicit return
end
end
মেথড . সিনট্যাক্স দিয়ে কল করা হয়:
calc = Calculator.new
calc.add(1, 3)
calc.multiply(num1: 2, num2: 5)
এই অনুশীলনীতে আপনি আপনার প্রিয় রান্নার বইয়ের একটি দুর্দান্ত লাসাগনা রান্না করতে সাহায্য করার জন্য কিছু কোড লিখবেন।
এখানে আপনার চারটি কাজ আছে, যেগুলোর সবই লাসাগনা রান্নায় ব্যয় হওয়া সময়ের সাথে সম্পর্কিত।
Lasagna::EXPECTED_MINUTES_IN_OVEN কনস্ট্যান্টটি ডিফাইন করুন, যেটি রিটার্ন করে লাসাগনাটিকে কত মিনিট ওভেনে থাকা উচিত। রান্নার বই অনুযায়ী ওভেনে প্রত্যাশিত সময় মিনিটে ৪০:
Lasagna::EXPECTED_MINUTES_IN_OVEN
# => 40
Lasagna#remaining_minutes_in_oven মেথডটি ডিফাইন করুন, যেটি প্যারামিটার হিসেবে নেয় লাসাগনাটি এতক্ষণ কত মিনিট ওভেনে ছিল, আর আগের কাজে পাওয়া প্রত্যাশিত ওভেন সময়ের ভিত্তিতে রিটার্ন করে লাসাগনাটিকে আরও কত মিনিট ওভেনে থাকতে হবে।
lasagna = Lasagna.new
lasagna.remaining_minutes_in_oven(30)
# => 10
Lasagna#preparation_time_in_minutes মেথডটি ডিফাইন করুন, যেটি প্যারামিটার হিসেবে নেয় আপনি লাসাগনায় কতগুলো স্তর যোগ করেছেন তার সংখ্যা, আর ধরে নেয় যে প্রতিটি স্তর প্রস্তুত করতে আপনার ২ মিনিট লাগে; এটি রিটার্ন করে লাসাগনা প্রস্তুত করতে আপনার কত মিনিট লেগেছে।
lasagna = Lasagna.new
lasagna.preparation_time_in_minutes(2)
# => 4
Lasagna#total_time_in_minutes মেথডটি ডিফাইন করুন, যেটি দুটি নামযুক্ত প্যারামিটার নেয়: number_of_layers প্যারামিটারটি হলো আপনি লাসাগনায় যে কতগুলো স্তর যোগ করেছেন তার সংখ্যা, আর actual_minutes_in_oven প্যারামিটারটি হলো লাসাগনাটি কত মিনিট ওভেনে ছিল তার সংখ্যা। ফাংশনটি রিটার্ন করবে লাসাগনা রান্না করতে আপনি মোট কত মিনিট কাজ করেছেন, যা হলো প্রস্তুতিতে ব্যয় হওয়া মিনিট এবং এই মুহূর্তে লাসাগনাটি ওভেনে যত মিনিট কাটিয়েছে তার যোগফল।
lasagna = Lasagna.new
lasagna.total_time_in_minutes(number_of_layers: 3, actual_minutes_in_oven: 20)
# => 26
Exercism-এ সাইন আপ করুন, Ruby ট্র্যাকের 21টি কনসেপ্ট121টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।