Ranges রুবি প্রোগ্রামিং ভাষায় একটি খুব শক্তিশালী এবং সহজে ব্যবহারযোগ্য বৈশিষ্ট্য, যা একটি নির্দিষ্ট পরিসরে (range) ডেটা ধারণ করে এবং বিভিন্ন কাজে ব্যবহৃত হয়, যেমন সংখ্যার পরিসর তৈরি, স্ট্রিংয়ে সন্নিবেশ, বা লিস্টের উপাদানগুলি সঞ্চালনা করা। রুবিতে রেঞ্জ তৈরি এবং তার সাথে iteration বা পুনরাবৃত্তি (looping) চালানোর জন্য কিছু গুরুত্বপূর্ণ পদ্ধতি রয়েছে।
১. Ranges এর ব্যবহার
রুবি ভাষায় রেঞ্জ তৈরির জন্য .. (inclusive range) এবং ... (exclusive range) সিম্বল ব্যবহার করা হয়।
১.১ Inclusive Range (..)
এই রেঞ্জে উল্লিখিত শেষ মানও অন্তর্ভুক্ত থাকে। অর্থাৎ, প্রথম মান থেকে শেষ মান পর্যন্ত রেঞ্জ তৈরি করা হয়।
range = 1..5
puts range.to_a # আউটপুট: [1, 2, 3, 4, 5]এখানে, 1..5 রেঞ্জের মধ্যে ১ থেকে ৫ পর্যন্ত সব মান অন্তর্ভুক্ত থাকবে।
১.২ Exclusive Range (...)
এই রেঞ্জে উল্লিখিত শেষ মান অন্তর্ভুক্ত থাকে না। অর্থাৎ, প্রথম মান থেকে শেষ মানের আগ পর্যন্ত রেঞ্জ তৈরি করা হয়।
range = 1...5
puts range.to_a # আউটপুট: [1, 2, 3, 4]এখানে, 1...5 রেঞ্জের মধ্যে ১ থেকে ৪ পর্যন্ত মান অন্তর্ভুক্ত থাকবে, তবে ৫ অন্তর্ভুক্ত হবে না।
২. Ranges এর Iteration
রুবিতে রেঞ্জের উপাদানগুলোর উপর iteration চালানোর জন্য বিভিন্ন পদ্ধতি ব্যবহার করা যায়। সাধারণত, each মেথড ব্যবহৃত হয়।
২.১ each মেথড দিয়ে Iteration
each মেথডের সাহায্যে আপনি রেঞ্জের প্রতিটি উপাদান পেতে পারেন এবং তাদের উপর কাজ করতে পারেন।
(1..5).each do |number|
puts number
endআউটপুট:
1
2
3
4
5এখানে, 1..5 রেঞ্জের প্রতিটি উপাদান each মেথডের মাধ্যমে আউটপুট হিসেবে প্রদর্শিত হচ্ছে।
২.২ each_with_index মেথড দিয়ে Iteration
each_with_index মেথডটি রেঞ্জের উপাদানগুলির পাশাপাশি তাদের ইনডেক্সও প্রদান করে। এটি বেশ উপকারী যখন আপনাকে ইনডেক্সের সাথে মানের উপর কাজ করতে হয়।
(1..5).each_with_index do |value, index|
puts "Index #{index} has value #{value}"
endআউটপুট:
Index 0 has value 1
Index 1 has value 2
Index 2 has value 3
Index 3 has value 4
Index 4 has value 5এখানে, each_with_index রেঞ্জের প্রতিটি উপাদান এবং তার ইনডেক্স প্রদান করে।
২.৩ map মেথড দিয়ে Iteration
map মেথডের মাধ্যমে আপনি রেঞ্জের প্রতিটি উপাদান পরিবর্তন করে একটি নতুন অ্যারে তৈরি করতে পারেন।
squared_numbers = (1..5).map { |number| number ** 2 }
puts squared_numbers # আউটপুট: [1, 4, 9, 16, 25]এখানে, map মেথড ব্যবহার করে ১ থেকে ৫ পর্যন্ত সংখ্যার বর্গফল বের করা হয়েছে এবং একটি নতুন অ্যারে তৈরি করা হয়েছে।
৩. Ranges এর অন্যান্য ব্যবহার
৩.১ Character Ranges
রুবি স্ট্রিংয়ে চরিত্রগুলির একটি রেঞ্জ তৈরি করতে পারে, যা বিশেষত অক্ষর বা অক্ষরের পরিসর নির্ধারণে সহায়ক।
range = 'a'..'e'
puts range.to_a # আউটপুট: ["a", "b", "c", "d", "e"]এখানে, a..e একটি রেঞ্জ তৈরি করেছে যা a, b, c, d, e অক্ষরগুলির মধ্যে রয়েছে।
৩.২ === অপারেটর
রেঞ্জের উপাদান চেক করার জন্য আপনি === অপারেটর ব্যবহার করতে পারেন, যা রেঞ্জের মধ্যে কোনো মান পড়লে true রিটার্ন করে।
range = 1..5
puts range === 3 # আউটপুট: true
puts range === 6 # আউটপুট: falseএখানে, 3 রেঞ্জের মধ্যে পড়ে এবং 6 রেঞ্জের বাইরে থাকে।
৩.৩ Ranges এবং Arrays
রেঞ্জের মধ্যে থাকা উপাদানগুলিকে অ্যারেতে রূপান্তরিত করার জন্য to_a মেথড ব্যবহার করা হয়।
range = (1..5)
array = range.to_a
puts array # আউটপুট: [1, 2, 3, 4, 5]এখানে, to_a মেথড ব্যবহার করে 1..5 রেঞ্জটি একটি অ্যারেতে রূপান্তরিত করা হয়েছে।
সারসংক্ষেপ
- Ranges রুবি ভাষায় একটি পরিসর তৈরি করে, যা পরবর্তী সংখ্যার মধ্যে কাজ করতে খুবই সুবিধাজনক।
- Inclusive range (
..) রেঞ্জের শেষ উপাদান অন্তর্ভুক্ত করে, এবং exclusive range (...) রেঞ্জের শেষ উপাদান অন্তর্ভুক্ত করে না। - Iteration করতে
each,each_with_index, এবংmapএর মতো মেথড ব্যবহার করা হয়। - Character ranges এবং ranges with
===অপারেটর ব্যবহার করে বিভিন্ন ধরনের কার্যক্রম করা যায়। to_aমেথড ব্যবহার করে রেঞ্জকে অ্যারেতে রূপান্তরিত করা যায়।
রুবির রেঞ্জ বৈশিষ্ট্যটি বিশেষভাবে গুরুত্বপূর্ণ যখন আপনাকে একটি নির্দিষ্ট পরিসরে লুপ চালাতে হয় বা মান পরীক্ষা করতে হয়।
Read more