কম্পিউটার টিউটোরিয়াল

রুবির grep মেথড মাস্টারিং: কোড উদাহরণসহ একটি ব্যবহারিক গাইড

grep মেথড সম্পর্কে কথা বলি।

এই মেথডটি আপনার জন্য কী করতে পারে?

আপনি Enumerable অবজেক্ট ফিল্টার করতে Grep ব্যবহার করতে পারেন, যেমন অ্যারে ও রেঞ্জ।

“কিন্তু select তো সেটি করে!”

হ্যাঁ, কিন্তু grep ভিন্নভাবে কাজ করে এবং ভিন্ন ফলাফল দেয়।

কয়েকটি উদাহরণ দেখি।

রুবি Grep মেথড উদাহরণ

এই অ্যারে দেওয়া আছে:

 objects = ["a", "b", "c", 1, 2, 3, nil] 

আপনি শুধু স্ট্রিংগুলো পেতে grep ব্যবহার করতে পারেন:

 objects.grep(String) # ["a", "b", "c"] 

শুধু ইন্টিজারগুলো:

 objects.grep(Integer) # [1, 2, 3] 

বা যেসব nil নয়:

 objects.grep_v(NilClass) # ["a", "b", "c", 1, 2, 3] 

আপনার যদি শব্দের একটি অ্যারে থাকে:

 fruit = ["apple", "orange", "banana"] 

আপনি "a" দিয়ে শুরু হওয়া সব শব্দ খুঁজে পেতে পারেন:

 fruit.grep(/^a/) # ["apple"] 

বা "e" দিয়ে শেষ হওয়া:

 fruit.grep(/e$/) # ["apple", "orange"] 

এবং আপনার যদি নাম্বারগুলো একটি লিস্ট থাকে:

 numbers = [9, 10, 11, 20] 

আপনি একটি রেঞ্জের ভিতরে থাকা সব নাম্বার পেতে পারেন:

 numbers.grep(5..10) # [9, 10] 

আপনি map মেথড এবং selectকে একসাথে কম্বাইন করতে পারেন যখন আপনি একটি ব্লক ব্যবহার করেন:

 numbers.grep(5..10) { |n| n * 2 } # [18, 20] 

আপনি যদি ফ্যান্সি হতে চান…

 times_two = ->(x) { x * 2 } numbers.grep(5..10, &times_two) # [18, 20] 

খুব কুল, সেটা না?

Grep vs Select: পার্থক্য বোঝা

grep কীভাবে কাজ করে?

ট্রিকটি হলো রুবিতে === মেথড (ট্রিপল ইকুয়ালস)।

Grep আপনার দেওয়া আর্গুমেন্টের ওপর এই মেথডটি কল করে।

এবং事实证明 ক্লাস, রেগুলার এক্সপ্রেশন এবং রেঞ্জ সবই === ইমপ্লিমেন্ট করে।

সেগুলো এই মেথডটি এমনভাবে ইমপ্লিমেন্ট করে যা ক্লাসের জন্য সenziible।

উদাহরণস্বরূপ:

  • ক্লাস (যেমন Integer বা Array), দেওয়া অবজেক্টের ক্লাসের সাথে তুলনা করে।
  • রেঞ্জ চেক করে নাম্বারটি রেঞ্জের ভিতরে আছে কিনা।
  • রেগুলার এক্সপ্রেশন চেক করে ম্যাচ আছে কিনা।

তাই যখন আপনি বলেন:

 objects.grep(Integer) 

আপনি আসলে বলছেন:

 objects.select { |obj| Integer === obj } 

খুব দিন ধরে আমি grep-এ বিভ্রান্ত ছিলাম…

যখন পর্যন্ত আমি এই বুঝতে পারলাম।

select মেথড একটি লিস্ট ফিল্টার করে ব্লকের রেজাল্টের বেসিসে।

যদি ব্লকটি true ইভ্যালুয়েট করে, তবে সেই এলিমেন্টটি বেছে নেওয়া হয়।

কিন্তু grep শুধু দুই জিনিস তুলনা করে === ব্যবহার করে।

আপনি বলতে পারেন grep হলো select-এর একটি বেশি স্পেশালাইজড ভার্সন!

রুবি Grep মাইন্ডম্যাপ

রুবির grep মেথড মাস্টারিং: কোড উদাহরণসহ একটি ব্যবহারিক গাইড

ভিডিও টিউটোরিয়াল দেখুন

সারসংক্ষেপ

আপনি রুবিতে grep মেথড সম্পর্কে শিখেছেন! এটি খুব সহায়ক একটি মেথড যখন আপনি বুঝতে পারেন এটি কীভাবে কাজ করে।

প্র্যাকটিস করতে ভুলবেন না যাতে এটি মনে পড়ে।

প্র্যাকটিসই মাস্টারির চাবি!


  1. রুবি মাস্টারিং: মেথড এলিয়াস তৈরি করার জন্য Alias কিওয়ার্ড ব্যবহার

  2. রুবি Enumerable মেথড মাস্টারিং: Any, All, None এবং One

  3. রুবির Map মেথড মাস্টারিং: উদাহরণসহ একটি ব্যবহারিক গাইড

  4. Linux Watch কমান্ড 습득: সিনট্যাক্স, অপশন এবং প্রয়োগিক উদাহরণ