আসুন grep
সম্পর্কে কথা বলি পদ্ধতি।
এই পদ্ধতিটি আপনার জন্য কী করতে পারে?
আপনি অ্যারে এবং রেঞ্জের মতো গণনাযোগ্য বস্তু ফিল্টার করতে গ্রেপ ব্যবহার করতে পারেন।
"কিন্তু নির্বাচন করুন ইতিমধ্যেই তা করেছে!"৷
হ্যাঁ, কিন্তু গ্রেপ ভিন্নভাবে কাজ করে এবং এটি ভিন্ন ফলাফল দেয়।
আসুন কিছু উদাহরণ দেখি।
রুবি গ্রেপ পদ্ধতির উদাহরণ
এই অ্যারে দেওয়া হয়েছে:
objects = ["a", "b", "c", 1, 2, 3, nil]
আপনি শুধুমাত্র স্ট্রিং পেতে grep ব্যবহার করতে পারেন :
objects.grep(String) # ["a", "b", "c"]
শুধুমাত্র পূর্ণসংখ্যা:
objects.grep(Integer) # [1, 2, 3]
অথবা সব কিছু যা শূন্য নয় :
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]
আপনি মানচিত্র পদ্ধতি একত্রিত করতে পারেন এবং একটি ব্লক ব্যবহার করার সময় একটিতে নির্বাচন করতে পারেন:
numbers.grep(5..10) { |n| n * 2 } # [18, 20]
যদি আপনি অভিনব পেতে চান...
times_two = ->(x) { x * 2 } numbers.grep(5..10, ×_two) # [18, 20]
বেশ সুন্দর, তাই না?
Grep বনাম নির্বাচন:পার্থক্য বোঝা
গ্রেপ কিভাবে কাজ করে?
কৌশলটি হল ===
রুবিতে পদ্ধতি (ট্রিপল সমান)।
গ্রেপ এই পদ্ধতিটিকে আপনি যে যুক্তিতে পাস করেন তাকেই বলে।
এবং দেখা যাচ্ছে যে ক্লাস, রেগুলার এক্সপ্রেশন এবং রেঞ্জ সবই ===
প্রয়োগ করে .
তারা এই পদ্ধতিটি এমনভাবে প্রয়োগ করে যা ক্লাসের জন্য বোধগম্য হয়।
উদাহরণস্বরূপ :
- ক্লাস (যেমন
Integer
অথবাArray
), প্রদত্ত অবজেক্ট ক্লাসের সাথে তুলনা করুন। - পরিসীমা পরিসরে নম্বরটি অন্তর্ভুক্ত কিনা তা পরীক্ষা করে।
- রেগুলার এক্সপ্রেশন চেক করুন মিল আছে কিনা।
তাই যখন আপনি বলবেন :
objects.grep(Integer)
আপনি আসলে যা বলছেন তা হল :
objects.select { |obj| Integer === obj }
অনেকদিন ধরে, আমি গ্রেপ নিয়ে বিভ্রান্ত ছিলাম…
যতক্ষণ না আমি এটি বুঝতে পারি।
select
পদ্ধতি ব্লকের ফলাফলের উপর ভিত্তি করে একটি তালিকা ফিল্টার করে।
যদি ব্লকটি সত্যে মূল্যায়ন করে, তাহলে সেই উপাদানটি বেছে নেওয়া হবে।
কিন্তু grep
===
ব্যবহার করে শুধু দুটি জিনিসের তুলনা করে .
আপনি বলতে পারেন যে grep হল নির্বাচনের আরও বিশেষায়িত সংস্করণ !
রুবি গ্রেপ মাইন্ডম্যাপ
ভিডিও টিউটোরিয়াল দেখুন
সারাংশ
আপনি রুবিতে গ্রেপ পদ্ধতি সম্পর্কে শিখেছেন! এটি একটি খুব সহায়ক পদ্ধতি যখন আপনি বুঝতে পারেন এটি কিভাবে কাজ করে।
এটি ডুবতে দেওয়ার জন্য অনুশীলন করতে ভুলবেন না।
অনুশীলনই আয়ত্তের চাবিকাঠি!