রুবি একটি ডাইনামিক এবং অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং ভাষা, যেখানে অ্যারে (Arrays) এবং হ্যাশ (Hashes) ডেটা সংগ্রহ করার জন্য দুটি প্রধান ডেটা স্ট্রাকচার। এদের মাধ্যমে একাধিক মান (values) একটি ভেরিয়েবলে ধারণ করা যায় এবং পরবর্তীতে সেগুলি অ্যাক্সেস করা হয়।
১. Arrays (অ্যারে)
অ্যারে হলো একাধিক মান (values) বা উপাদান (elements) ধারণ করার একটি অর্ডারড ডেটা স্ট্রাকচার। অ্যারে একটি নির্দিষ্ট অর্ডারে উপাদানগুলিকে ধারণ করে, এবং অ্যারের উপাদানগুলো ইনডেক্স দ্বারা অ্যাক্সেস করা যায়।
অ্যারে তৈরি (Creating an Array)
রুবিতে একটি অ্যারে তৈরি করতে স্কোয়ার ব্র্যাকেট [] ব্যবহার করা হয়।
fruits = ["Apple", "Banana", "Orange"]এখানে fruits একটি অ্যারে, যার মধ্যে ৩টি উপাদান আছে।
অ্যারে অ্যাক্সেস (Accessing Array Elements)
অ্যারের উপাদানগুলিকে তাদের ইনডেক্স (যা 0 থেকে শুরু হয়) ব্যবহার করে অ্যাক্সেস করা যায়।
fruits = ["Apple", "Banana", "Orange"]
puts fruits[0] # Output: Apple
puts fruits[1] # Output: Banana
puts fruits[2] # Output: Orangeঅ্যারে পরিবর্তন (Modifying an Array)
অ্যারের উপাদান পরিবর্তন করতে ইনডেক্স ব্যবহার করা হয়।
fruits = ["Apple", "Banana", "Orange"]
fruits[1] = "Mango" # Change Banana to Mango
puts fruits # Output: ["Apple", "Mango", "Orange"]অ্যারে মেথডস (Array Methods)
রুবিতে অ্যারের উপর কাজ করার জন্য বিভিন্ন মেথড রয়েছে। যেমন:
push: নতুন উপাদান যোগ করাpop: সর্বশেষ উপাদান মুছে ফেলাshift: প্রথম উপাদান মুছে ফেলাlength: অ্যারের দৈর্ঘ্য জানা
fruits = ["Apple", "Banana", "Orange"]
fruits.push("Grapes") # Add to the end
puts fruits # Output: ["Apple", "Banana", "Orange", "Grapes"]
fruits.pop # Remove the last element
puts fruits # Output: ["Apple", "Banana", "Orange"]
puts fruits.length # Output: 3অ্যারে ইটারেটিং (Iterating Over Arrays)
অ্যারের উপাদানগুলো লুপের মাধ্যমে এক্সিকিউট করা যায়।
fruits = ["Apple", "Banana", "Orange"]
fruits.each do |fruit|
puts fruit
endএখানে, each মেথডটি অ্যারের প্রতিটি উপাদান একে একে প্রিন্ট করবে।
২. Hashes (হ্যাশেস)
হ্যাশ হলো একটি অর্ডারড ডেটা স্ট্রাকচার যা কীগুলির (keys) সাথে মান (values) সংযুক্ত করে। হ্যাশে প্রতিটি কীগুলির জন্য একটি মান থাকে, এবং মানগুলো কীগুলির মাধ্যমে অ্যাক্সেস করা যায়।
হ্যাশ তৈরি (Creating a Hash)
হ্যাশ তৈরি করতে রুবিতে কোলন : এবং অ্যারের মধ্যে কীগুলিকে পাস করা হয়।
person = { "name" => "আজিজ", "age" => 25, "city" => "Dhaka" }এখানে person একটি হ্যাশ, যেখানে কীগুলি "name", "age", এবং "city" এবং তাদের মানগুলো যথাক্রমে "আজিজ", 25, এবং "Dhaka"।
হ্যাশ অ্যাক্সেস (Accessing Hash Elements)
হ্যাশের উপাদান অ্যাক্সেস করতে কীর মাধ্যমে মান অ্যাক্সেস করা হয়।
person = { "name" => "আজিজ", "age" => 25, "city" => "Dhaka" }
puts person["name"] # Output: আজিজ
puts person["age"] # Output: 25
puts person["city"] # Output: Dhakaহ্যাশ পরিবর্তন (Modifying a Hash)
হ্যাশের কীর মাধ্যমে মান পরিবর্তন করা যায়।
person = { "name" => "আজিজ", "age" => 25, "city" => "Dhaka" }
person["age"] = 26 # Change age to 26
puts person # Output: {"name"=>"আজিজ", "age"=>26, "city"=>"Dhaka"}হ্যাশ মেথডস (Hash Methods)
হ্যাশে বিভিন্ন মেথড ব্যবহার করা যায়, যেমন:
keys: হ্যাশের সকল কীগুলি ফিরিয়ে আনাvalues: হ্যাশের সকল মান ফিরিয়ে আনাeach: কীগুলির মাধ্যমে মান এক্সিকিউট করা
person = { "name" => "আজিজ", "age" => 25, "city" => "Dhaka" }
puts person.keys # Output: ["name", "age", "city"]
puts person.values # Output: ["আজিজ", 25, "Dhaka"]
person.each do |key, value|
puts "#{key}: #{value}"
endহ্যাশে নতুন কীগুলি যোগ করা (Adding New Keys to a Hash)
person = { "name" => "আজিজ", "age" => 25 }
person["city"] = "Dhaka" # Adding a new key-value pair
puts person # Output: {"name"=>"আজিজ", "age"=>25, "city"=>"Dhaka"}৩. অ্যারে এবং হ্যাশের মধ্যে পার্থক্য (Difference Between Arrays and Hashes)
| বৈশিষ্ট্য | Array | Hash |
|---|---|---|
| ধরণ | অর্ডারড, ইন্ডেক্সড কালেকশন | অর্ডারড কীগুলির মান সম্পর্কিত কালেকশন |
| অ্যাক্সেস | ইনডেক্সের মাধ্যমে (0 থেকে শুরু) | কীর মাধ্যমে (যেমন: "name", "age") |
| লুকেশন | অ্যারের উপাদানগুলি নির্দিষ্ট ইনডেক্সে থাকে | হ্যাশে কীগুলির মাধ্যমে মান অ্যাক্সেস করা হয় |
| উপাদান | এক বা একাধিক ধরনের উপাদান ধারণ করতে পারে | কীগুলি ইউনিক হতে হবে, মান যেকোনো ধরনের |
| উদাহরণ | ["Apple", "Banana", "Orange"] | {"name" => "আজিজ", "age" => 25} |
সারসংক্ষেপ
রুবিতে অ্যারে এবং হ্যাশ দুটি গুরুত্বপূর্ণ ডেটা স্ট্রাকচার। অ্যারে একটি অর্ডারড কালেকশন যেখানে উপাদানগুলি ইনডেক্সের মাধ্যমে অ্যাক্সেস করা হয়, এবং হ্যাশ একটি অর্ডারড কীগুলির মান সম্পর্কিত কালেকশন, যেখানে প্রতিটি কীগুলির জন্য একটি মান থাকে। অ্যারে এবং হ্যাশ উভয়ই রুবিতে ডেটা সংরক্ষণের জন্য গুরুত্বপূর্ণ এবং এগুলি কার্যকরভাবে ব্যবহৃত হয় বিভিন্ন ডেভেলপমেন্ট কাজের জন্য।
রুবি একটি ডাইনামিক এবং অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং ভাষা, যেখানে ডেটা সংরক্ষণ ও সংগঠনের জন্য Arrays এবং Hashes ব্যবহৃত হয়। এগুলি ডেটার সংগ্রহ হিসেবে কাজ করে, তবে তাদের স্ট্রাকচার এবং ব্যবহার ভিন্ন। নিচে Arrays এবং Hashes এর মৌলিক ধারণা, ব্যবহার এবং পার্থক্য আলোচনা করা হলো।
Arrays (এ্যারেগেট)
Arrays রুবিতে একটি সিকোয়েন্স ডেটা স্ট্রাকচার, যা একাধিক উপাদান (এলিমেন্ট) ধারন করতে পারে। প্রতিটি উপাদানের একটি নির্দিষ্ট ইনডেক্স থাকে, এবং অ্যারের উপাদানগুলি ০ থেকে শুরু হয়ে সিকোয়েন্স অনুসারে অর্ডার করা থাকে।
Array ডিক্লারেশন
রুবিতে একটি অ্যারে তৈরি করতে স্কোয়ার ব্র্যাকেট [] ব্যবহার করা হয়।
সিনট্যাক্স:
array_name = [element1, element2, element3, ...]উদাহরণ:
fruits = ["apple", "banana", "cherry"]
puts fruits[0] # এটি "apple" আউটপুট করবেএখানে, fruits একটি অ্যারে, এবং এর প্রথম উপাদান "apple" ইনডেক্স 0 এ রয়েছে।
Array এর বৈশিষ্ট্য
- ইনডেক্সড: প্রতিটি উপাদান একটি নির্দিষ্ট ইনডেক্সে থাকে (ইনডেক্স ০ থেকে শুরু হয়)।
- অর্ডারড: অ্যারে উপাদানগুলি নির্দিষ্ট অর্ডারে রাখা হয়, অর্থাৎ, অ্যারে তৈরি করার সময় যে অর্ডারে উপাদানগুলি দেয়া হয়, তা বজায় থাকে।
- মিক্সড ডেটা টাইপস: এক একটি অ্যারে বিভিন্ন ধরনের ডেটা ধারণ করতে পারে।
আরেকটি উদাহরণ:
arr = [1, "banana", 3.14, true]
puts arr[1] # আউটপুট: "banana"
puts arr[2] # আউটপুট: 3.14এখানে, arr অ্যারেতে বিভিন্ন ধরনের ডেটা (ইন্টিজার, স্ট্রিং, ফ্লোট, বুলিয়ান) সংরক্ষিত আছে।
Hashes (হ্যাশ)
Hashes রুবিতে একটি কী-ভ্যালু পেয়ার ডেটা স্ট্রাকচার, যেখানে প্রতিটি উপাদান একটি কী এবং একটি সংশ্লিষ্ট মান (ভ্যালু) থাকে। এটি সাধারণত ডিকশনারি বা ম্যাপ এর মতো কাজ করে, যেখানে কীগুলি ব্যবহার করে মানগুলি খোঁজা হয়।
Hash ডিক্লারেশন
রুবিতে একটি হ্যাশ তৈরি করতে কোলন : এবং অ্যাসাইনমেন্ট => ব্যবহার করা হয়।
সিনট্যাক্স:
hash_name = {key1: value1, key2: value2, key3: value3, ...}উদাহরণ:
person = { "name" => "আজিজ", "age" => 25, "city" => "Dhaka" }
puts person["name"] # আউটপুট: "আজিজ"
puts person["age"] # আউটপুট: 25এখানে, person একটি হ্যাশ যেখানে তিনটি কী-ভ্যালু পেয়ার রয়েছে:
"name" => "আজিজ""age" => 25"city" => "Dhaka"
Hash এর বৈশিষ্ট্য
- কী-ভ্যালু পেয়ার: প্রতিটি উপাদান একটি কী (key) এবং একটি মান (value) নিয়ে গঠিত।
- অর্ডারড (Ruby 1.9 এবং তার পরবর্তী ভার্সন): হ্যাশে উপাদানগুলি ইনসার্ট হওয়ার অর্ডারে থাকে।
- মিক্সড ডেটা টাইপস: হ্যাশের কী এবং ভ্যালু বিভিন্ন ধরনের ডেটা ধারণ করতে পারে।
আরেকটি উদাহরণ:
employee = { id: 1001, name: "John", position: "Developer" }
puts employee[:name] # আউটপুট: "John"
puts employee[:position] # আউটপুট: "Developer"এখানে, employee একটি হ্যাশ যেখানে কীগুলি :name, :position ইত্যাদি এবং তাদের সংশ্লিষ্ট মানগুলি "John", "Developer"।
Arrays এবং Hashes এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Arrays | Hashes |
|---|---|---|
| ডেটা স্ট্রাকচার | সিকোয়েন্স ডেটা স্ট্রাকচার (ইনডেক্সড) | কী-ভ্যালু পেয়ার ডেটা স্ট্রাকচার |
| ইনডেক্সিং | ইনডেক্স নম্বর (0, 1, 2, ...) দিয়ে অ্যাক্সেস করা হয় | কী (key) দিয়ে অ্যাক্সেস করা হয় |
| অর্ডার | অর্ডার রাখা হয় (এলিমেন্ট ইনসার্ট করার অর্ডার) | রুবি 1.9 এবং পরবর্তী সংস্করণে অর্ডার রাখা হয় |
| ডেটা টাইপ | একই ধরনের ডেটা থাকতে পারে, তবে মিশ্রিত ডেটা ধারণ করতে পারে | কী এবং ভ্যালুর ডেটা টাইপ আলাদা হতে পারে |
সংক্ষেপ
- Arrays হল এমন একটি ডেটা স্ট্রাকচার যেখানে উপাদানগুলো একটি নির্দিষ্ট অর্ডারে থাকে এবং তাদের একটি ইনডেক্স থাকে।
- Hashes হল এমন একটি ডেটা স্ট্রাকচার যেখানে উপাদানগুলো কী-ভ্যালু পেয়ার হিসেবে থাকে এবং আপনি কীগুলির মাধ্যমে তাদের মান অ্যাক্সেস করতে পারেন।
উপরে দেয়া উদাহরণগুলোর মাধ্যমে আপনি দেখতে পাচ্ছেন, Arrays সাধারণত সিকোয়েন্স ডেটা সংরক্ষণ করে, এবং Hashes বিশেষভাবে কীগুলির মাধ্যমে তথ্য সংরক্ষণ ও অ্যাক্সেস করতে ব্যবহৃত হয়।
Arrays (অ্যারে) রুবি প্রোগ্রামিং ভাষায় একটি ডেটা স্ট্রাকচার, যা একাধিক মান বা উপাদান একত্রে সংরক্ষণ করে। অ্যারের প্রতিটি উপাদান একটি ইনডেক্স দ্বারা চিহ্নিত হয়, যা শূন্য (0) থেকে শুরু হয়। রুবি ভাষায় অ্যারের সাথে যোগ, অপসারণ এবং সন্নিবেশের জন্য বিভিন্ন মেথড রয়েছে, যা সহজে ডেটা পরিচালনা করতে সহায়তা করে।
১. Arrays এর সাথে যোগ (Addition)
অ্যারেতে নতুন উপাদান যোগ করার জন্য রুবি বেশ কিছু মেথড সরবরাহ করে।
১.১ << (Shovel Operator)
এটি একটি সাধারণ অপারেটর যা অ্যারের শেষের দিকে একটি নতুন উপাদান যোগ করে।
arr = [1, 2, 3]
arr << 4
puts arr # আউটপুট: [1, 2, 3, 4]১.২ push মেথড
push মেথডটি অ্যারের শেষে একটি বা একাধিক উপাদান যোগ করার জন্য ব্যবহৃত হয়।
arr = [1, 2, 3]
arr.push(4)
puts arr # আউটপুট: [1, 2, 3, 4]একাধিক উপাদান যোগ করতে:
arr.push(5, 6)
puts arr # আউটপুট: [1, 2, 3, 4, 5, 6]১.৩ concat মেথড
concat মেথড ব্যবহার করে একটি অ্যারের মধ্যে অন্য একটি অ্যারের উপাদান যোগ করা যায়।
arr1 = [1, 2]
arr2 = [3, 4]
arr1.concat(arr2)
puts arr1 # আউটপুট: [1, 2, 3, 4]২. Arrays থেকে অপসারণ (Removal)
অ্যারে থেকে উপাদান অপসারণের জন্য রুবি বিভিন্ন মেথড সরবরাহ করে।
২.১ pop মেথড
pop মেথডটি অ্যারের শেষ থেকে একটি উপাদান অপসারণ করে এবং সেই উপাদানটি রিটার্ন করে।
arr = [1, 2, 3, 4]
arr.pop
puts arr # আউটপুট: [1, 2, 3]২.২ shift মেথড
shift মেথডটি অ্যারের প্রথম উপাদান অপসারণ করে এবং সেটি রিটার্ন করে।
arr = [1, 2, 3, 4]
arr.shift
puts arr # আউটপুট: [2, 3, 4]২.৩ delete মেথড
delete মেথডটি নির্দিষ্ট মান বা উপাদান অ্যারে থেকে সরিয়ে দেয়।
arr = [1, 2, 3, 4]
arr.delete(3)
puts arr # আউটপুট: [1, 2, 4]২.৪ delete_at মেথড
delete_at মেথডটি নির্দিষ্ট ইনডেক্সে থাকা উপাদানটি সরিয়ে দেয়।
arr = [1, 2, 3, 4]
arr.delete_at(2) # ইনডেক্স 2 থেকে উপাদান অপসারণ
puts arr # আউটপুট: [1, 2, 4]৩. Arrays এ সন্নিবেশ (Insertion)
অ্যারেতে নির্দিষ্ট পজিশনে নতুন উপাদান সন্নিবেশ করার জন্য রুবি কিছু মেথড সরবরাহ করে।
৩.১ insert মেথড
insert মেথডটি নির্দিষ্ট ইনডেক্সে নতুন উপাদান সন্নিবেশ করে।
arr = [1, 2, 4]
arr.insert(2, 3) # ইনডেক্স 2 এ 3 সন্নিবেশ
puts arr # আউটপুট: [1, 2, 3, 4]এছাড়া, একাধিক উপাদানও সন্নিবেশ করা যায়।
arr.insert(1, "a", "b")
puts arr # আউটপুট: [1, "a", "b", 2, 3, 4]৪. Arrays এ উপাদান অনুসন্ধান (Searching)
অ্যারে থেকে একটি উপাদান খুঁজে বের করার জন্য রুবি কিছু মেথড সরবরাহ করে।
৪.১ include? মেথড
include? মেথডটি চেক করে যে অ্যারে একটি নির্দিষ্ট উপাদান ধারণ করছে কিনা।
arr = [1, 2, 3, 4]
puts arr.include?(3) # আউটপুট: true
puts arr.include?(5) # আউটপুট: false৪.২ index মেথড
index মেথডটি অ্যারেতে একটি উপাদানের ইনডেক্স রিটার্ন করে।
arr = [1, 2, 3, 4]
puts arr.index(3) # আউটপুট: 2সারসংক্ষেপ
- যোগ (Addition):
<<,push, এবংconcatমেথড ব্যবহার করে অ্যারে যোগ করা যায়। - অপসারণ (Removal):
pop,shift,delete, এবংdelete_atমেথড ব্যবহার করে অ্যারে থেকে উপাদান অপসারণ করা যায়। - সন্নিবেশ (Insertion):
insertমেথড ব্যবহার করে অ্যারের নির্দিষ্ট ইনডেক্সে উপাদান সন্নিবেশ করা যায়। - অনুসন্ধান (Searching):
include?এবংindexমেথড ব্যবহার করে অ্যারে থেকে উপাদান খুঁজে বের করা যায়।
রুবির এই অ্যারে মেথডগুলি ব্যবহার করে আপনি ডেটা স্ট্রাকচারটি কার্যকরভাবে পরিচালনা করতে পারবেন।
Hashes রুবি ভাষায় একটি অত্যন্ত শক্তিশালী ডেটা স্ট্রাকচার, যা Key-Value পেয়ার ধারণ করে। এটি এমন এক ধরনের অ্যাসোসিয়েটিভ অ্যারে (associative array) যেখানে Key (কী) এবং Value (মান) জোড়া হিসেবে সংরক্ষিত থাকে। Hash ব্যবহার করে আপনি বিভিন্ন ধরনের তথ্য স্টোর করতে পারেন এবং সেগুলোর উপর বিভিন্ন ধরনের অপারেশন করতে পারেন।
১. Hash তৈরি করা
রুবিতে একটি Hash তৈরি করতে সাধারণত {} ব্যবহার করা হয়, এবং Key-Value পেয়ার দুটি কোলন (:) দিয়ে আলাদা করা হয়।
উদাহরণ:
person = { name: "John", age: 30, city: "New York" }এখানে, name, age, এবং city হল Key, এবং "John", 30, এবং "New York" হল তাদের সংশ্লিষ্ট Value।
২. Hash এ নতুন Key-Value পেয়ার যোগ করা
Hash এ নতুন Key-Value পেয়ার যোগ করতে সরাসরি []= সিম্বল ব্যবহার করা হয়।
উদাহরণ:
person = { name: "John", age: 30 }
person[:city] = "New York" # নতুন Key-Value পেয়ার যোগ করা হচ্ছে
puts personআউটপুট:
{name: "John", age: 30, city: "New York"}এখানে, :city একটি নতুন Key হিসেবে যোগ করা হয়েছে এবং "New York" তার Value।
৩. Hash থেকে Value অ্যাক্সেস করা
Key ব্যবহার করে আপনি Value অ্যাক্সেস করতে পারেন।
উদাহরণ:
person = { name: "John", age: 30, city: "New York" }
puts person[:name] # Output: John
puts person[:age] # Output: 30এখানে, person[:name] দিয়ে আমরা "John" এই Value পেয়ে যাচ্ছি।
৪. Hash এ Key-Value পেয়ার চেক করা
আপনি Hash এ কোনো Key আছে কিনা তা চেক করতে .key? অথবা .has_key? মেথড ব্যবহার করতে পারেন।
উদাহরণ:
person = { name: "John", age: 30, city: "New York" }
puts person.key?(:age) # Output: true
puts person.has_key?(:city) # Output: true
puts person.key?(:country) # Output: falseএখানে, :age এবং :city কীগুলি Hash-এ আছে, কিন্তু :country নেই।
৫. Value Update বা পরিবর্তন করা
Hash এ Value আপডেট করতে আপনি সহজেই সংশ্লিষ্ট Key ব্যবহার করতে পারেন।
উদাহরণ:
person = { name: "John", age: 30, city: "New York" }
person[:age] = 31 # Value পরিবর্তন করা হচ্ছে
puts person[:age] # Output: 31এখানে, person[:age] এর মান "30" থেকে "31" পরিবর্তন করা হয়েছে।
৬. Hash থেকে Key-Value পেয়ার মুছে ফেলা
Key-Value পেয়ার মুছে ফেলার জন্য .delete মেথড ব্যবহার করা হয়। এটি নির্দিষ্ট Key অনুসারে তার সংশ্লিষ্ট Value মুছে দেয়।
উদাহরণ:
person = { name: "John", age: 30, city: "New York" }
person.delete(:city) # :city Key এর Value মুছে ফেলা হচ্ছে
puts personআউটপুট:
{name: "John", age: 30}এখানে, :city Key-Value পেয়ারটি মুছে ফেলা হয়েছে।
৭. All Keys বা All Values বের করা
আপনি Hash-এর সমস্ত Keys বা Values পেতে .keys এবং .values মেথড ব্যবহার করতে পারেন।
উদাহরণ:
person = { name: "John", age: 30, city: "New York" }
puts person.keys # Output: [:name, :age, :city]
puts person.values # Output: ["John", 30, "New York"]এখানে, person.keys দিয়ে সমস্ত Key এবং person.values দিয়ে সমস্ত Value বের করা হয়েছে।
৮. Hash Iteration
আপনি Hash এর মধ্যে Key-Value পেয়ারগুলির উপর লুপ চালাতে .each মেথড ব্যবহার করতে পারেন।
উদাহরণ:
person = { name: "John", age: 30, city: "New York" }
person.each do |key, value|
puts "#{key}: #{value}"
endআউটপুট:
name: John
age: 30
city: New Yorkএখানে, .each মেথড ব্যবহার করে Hash এর সব Key-Value পেয়ার চেক করা হয়েছে এবং আউটপুটে দেখানো হয়েছে।
৯. Default Values ব্যবহার করা
রুবি Hash-এ default value সেট করা যায়, যা কোনো Key না পাওয়া গেলে সেই default value ব্যবহার হবে।
উদাহরণ:
person = Hash.new("Unknown") # Default value "Unknown"
person[:name] = "John"
person[:age] = 30
puts person[:name] # Output: John
puts person[:city] # Output: Unknown (since city key is not defined)এখানে, person[:city] Key-Value পেয়ারটি না থাকা সত্ত্বেও "Unknown" আউটপুট হয়েছে, কারণ আমরা Hash-এ default value "Unknown" সেট করেছি।
সারসংক্ষেপ
- Hash রুবির একটি ডেটা স্ট্রাকচার যা Key-Value পেয়ার হিসেবে ডেটা সংরক্ষণ করে।
- Key-Value পেয়ার যোগ করতে
[]=ব্যবহার করা হয়। - Value অ্যাক্সেস করতে Key ব্যবহার করা হয়।
.key?,.has_key?ইত্যাদি মেথড দিয়ে Key চেক করা যায়।- Value পরিবর্তন করতে সরাসরি Key ব্যবহার করে নতুন মান অ্যাসাইন করা হয়।
.deleteমেথড দিয়ে Key-Value পেয়ার মুছে ফেলা যায়।.keysএবং.valuesমেথড দিয়ে Hash এর সব Key বা Value পাওয়া যায়।.eachমেথড দিয়ে Hash এর সব Key-Value পেয়ারগুলির উপর লুপ চালানো যায়।
এইভাবে, রুবিতে Hashes ব্যবহার করে আমরা ডেটার জটিল স্টোরেজ এবং দ্রুত অ্যাক্সেস নিশ্চিত করতে পারি।
রুবি প্রোগ্রামিং ভাষায় Arrays এবং Hashes অত্যন্ত গুরুত্বপূর্ণ ডেটা স্ট্রাকচার, এবং এগুলির উপর বিভিন্ন iteration techniques ব্যবহার করে তাদের উপাদানগুলোর উপর কাজ করা যায়। রুবি ইনবিল্ট iterators প্রদান করে যেগুলি অ্যারে এবং হ্যাশের উপাদানগুলোর উপর বিভিন্ন কার্যকরী পদ্ধতিতে কাজ করতে সাহায্য করে।
১. Arrays এর সাথে Iteration Techniques
Arrays হলো একটি সাজানো ডেটা সংগ্রহ, যেখানে উপাদানগুলো ইনডেক্স দ্বারা অ্যাক্সেস করা যায়। রুবিতে অ্যারে ইটারেট করার জন্য বিভিন্ন ধরনের পদ্ধতি রয়েছে।
১.১ each Method (প্রতি উপাদান)
each মেথড অ্যারের প্রতিটি উপাদানকে প্রক্রিয়া করার জন্য ব্যবহৃত হয়। এটি একটি ব্লক পাস করে, যা প্রতিটি উপাদান প্রক্রিয়া করতে সাহায্য করে।
arr = [1, 2, 3, 4, 5]
arr.each do |num|
puts num * 2
end
# আউটপুট:
# 2
# 4
# 6
# 8
# 10১.২ map Method (নতুন অ্যারে তৈরি করা)
map মেথড অ্যারের প্রতিটি উপাদান পরিবর্তন করে এবং নতুন একটি অ্যারে তৈরি করে।
arr = [1, 2, 3, 4, 5]
new_arr = arr.map { |num| num * 2 }
puts new_arr.inspect
# আউটপুট: [2, 4, 6, 8, 10]১.৩ select Method (চয়ন করা)
select মেথড এমন উপাদানগুলো বেছে নেয় যেগুলি একটি নির্দিষ্ট শর্ত পূর্ণ করে।
arr = [1, 2, 3, 4, 5, 6]
even_numbers = arr.select { |num| num.even? }
puts even_numbers.inspect
# আউটপুট: [2, 4, 6]১.৪ each_with_index Method (ইন্ডেক্স সহ ইটারেশন)
each_with_index মেথড প্রতিটি উপাদানের সাথে সাথে তার ইনডেক্সও প্রদান করে।
arr = ["a", "b", "c", "d"]
arr.each_with_index do |value, index|
puts "Index #{index}: #{value}"
end
# আউটপুট:
# Index 0: a
# Index 1: b
# Index 2: c
# Index 3: d২. Hashes এর সাথে Iteration Techniques
Hashes হল একটি অর্ডারহীন ডেটা সংগ্রহ যেখানে key-value pairs ধারণ করা হয়। রুবিতে হ্যাশ ইটারেট করার জন্য অনেক শক্তিশালী পদ্ধতি রয়েছে।
২.১ each Method (প্রতি কী-ভ্যালু)
each মেথড হ্যাশের প্রতিটি কী-ভ্যালু জোড়া (key-value pair) প্রক্রিয়া করার জন্য ব্যবহৃত হয়।
hash = { name: "John", age: 30, city: "New York" }
hash.each do |key, value|
puts "#{key}: #{value}"
end
# আউটপুট:
# name: John
# age: 30
# city: New York২.২ select Method (চয়ন করা)
select মেথড হ্যাশের এমন কী-ভ্যালু জোড়া নির্বাচন করতে ব্যবহৃত হয় যা একটি নির্দিষ্ট শর্ত পূর্ণ করে।
hash = { name: "John", age: 30, city: "New York" }
filtered_hash = hash.select { |key, value| key == :age }
puts filtered_hash.inspect
# আউটপুট: {:age=>30}২.৩ map Method (নতুন হ্যাশ তৈরি করা)
map মেথড ব্যবহার করে আপনি হ্যাশের কী-ভ্যালু জোড়া পরিবর্তন করে একটি নতুন হ্যাশ তৈরি করতে পারেন।
hash = { a: 1, b: 2, c: 3 }
new_hash = hash.map { |key, value| [key, value * 2] }.to_h
puts new_hash.inspect
# আউটপুট: {:a=>2, :b=>4, :c=>6}২.৪ each_key Method (কী-ভিত্তিক ইটারেশন)
each_key মেথড শুধুমাত্র হ্যাশের কী গুলি ইটারেট করে।
hash = { name: "John", age: 30, city: "New York" }
hash.each_key do |key|
puts key
end
# আউটপুট:
# name
# age
# city২.৫ each_value Method (ভ্যালু-ভিত্তিক ইটারেশন)
each_value মেথড শুধুমাত্র হ্যাশের ভ্যালুগুলি ইটারেট করে।
hash = { name: "John", age: 30, city: "New York" }
hash.each_value do |value|
puts value
end
# আউটপুট:
# John
# 30
# New Yorkসারসংক্ষেপ
- Arrays (অ্যারে) ইটারেট করার জন্য
each,map,select,each_with_indexইত্যাদি মেথড ব্যবহার করা হয়। - Hashes (হ্যাশ) ইটারেট করার জন্য
each,select,map,each_key,each_valueইত্যাদি মেথড ব্যবহার করা হয়। eachসাধারণত প্রতিটি উপাদান বা কী-ভ্যালু জোড়া প্রক্রিয়া করার জন্য ব্যবহৃত হয়।mapনতুন অ্যারে বা হ্যাশ তৈরি করতে ব্যবহৃত হয়।selectএকটি শর্তের ভিত্তিতে উপাদান বা কী-ভ্যালু নির্বাচন করতে ব্যবহৃত হয়।
এই ইটারেশন টেকনিকগুলো রুবির শক্তিশালী বৈশিষ্ট্য, যা অ্যারে এবং হ্যাশের উপর কার্যকরীভাবে কাজ করার সুবিধা প্রদান করে।
Read more