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

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

আজ আপনি ৪টি Enumerable মেথড শিখবেন যা আপনাকে একটি কন্ডিশনাল স্টেটমেন্ট একটি এলিমেন্টের অ্যারে, হ্যাশ, বা Enumerable মডিউল ইনক্লুড করা যেকোনো অবজেক্টের বিরুদ্ধে চেক করতে সাহায্য করবে।

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

এই ৪টি মেথড true বা false রিটার্ন করে।

সামগ্রী

  • ১ রুবি All মেথড
  • ২ All এবং খালি অ্যারে
  • ৩ রুবি None মেথড
  • ৪ রুবি Any মেথড
  • ৫ রুবি One মেথড
  • ৬ রুবি ২.৫-এ নতুন ফিচার
  • ৭ সারসংক্ষেপ
    • ৭.১ সম্পর্কিত

শুরু করা যাক!

রুবি All মেথড

আপনি যদি চেক করতে চান যে একটি অ্যারেতে সকল স্ট্রিংয়ের একটি নির্দিষ্ট সাইজ আছে কিনা।

আপনি এভাবে করতে পারেন:

 def all_words_have_specific_size?(words) return false if words.empty? words.each do |str| return false unless str.size == 5 end true end words = ["bacon", "orange", "apple"] all_words_have_specific_size?(words) # false 

আমরা প্রতিটি স্ট্রিং চেক করি, যদি সাইজটি আমাদের ইচ্ছামতো না হয় তবে false রিটার্ন করি, অন্যথায় শেষে true রিটার্ন করি।

এইরকম চেকের জন্য এটি অনেক কোড।

কল্পনা করুন প্রতিবার আপনি এই ধরনের চেক করতে চাইলে এটি সেটআপ করতে হবে।

এটি অনেক কাজ!

এখানে একমাত্র জিনিস যা আমাদের যত্ন:

 str.size == 5 

এই কন্ডিশনটি আমরা চেক করছি।

এটি করার আরও ভালো উপায় কি নেই?

হ্যাঁ!

সকল কঠিন কাজ আপনার জন্য করার জন্য all? মেথড ব্যবহার করুন।

এখানে কীভাবে:

 strings.all? { |str| str.size == 5 } 

বাস।

All এবং খালি অ্যারে

একটি জিনিস জানতে হবে:

এই all? মেথডটি true রিটার্ন করবে যদি আপনি এটি একটি খালি অ্যারে-এ কল করেন।

উদাহরণ:

 [].all? { |s| s.size == 1 } # true 

ব্যাখ্যা:

যেহেতু কোনো এলিমেন্ট false নয়, তাই সব এলিমেন্ট true হতে হবে।

এই লজিকটি এর পেছনে।

রুবি None মেথড

আপনি যদি all?-এর বিপরীত চান, none? ব্যবহার করুন।

এখানে একটি উদাহরণ:

 strings.none? { |str| str.size == 5 } 

এটি true রিটার্ন করবে যদি কোনো স্ট্রিং কন্ডিশন ম্যাচ না করে, অথবা false যদি এক বা অধিক ম্যাচ করে।

এটি if স্টেটমেন্টের জন্য unless-এর মতো।

রুবি Any মেথড

আপনি কি জানতে চান যেকোনো এলিমেন্ট আপনার কন্ডিশন ম্যাচ করে কিনা?

আপনি any? মেথড ব্যবহার করতে পারেন!

এভাবেই:

 [1,2,3,4,5].any? # true 

এই নির্দিষ্ট উদাহরণে, any? empty?-এর ইনভার্সর মত কাজ করে। কিন্তু এটি সব পরিস্থিতিতে কাজ করবে না।

কারণ এটি প্রশ্ন করছে:

“এই অ্যারেতে কি কোনো TRUTHY এলিমেন্ট আছে?”

যদি আপনার অ্যারেতে শুধু নন-Truthy (nil/false) ভ্যালু থাকে তবে আপনি false পাবেন, কিন্তু অ্যারেটি আসলে খালি নয়।

উদাহরণ:

 [nil].any? # false 

আপনি এই মেথডে একটি ব্লকও পাস করতে পারেন:

 [1,2,3].any? { |n| n > 0 } # true 

এটি চেক করবে n > 0 কমপক্ষে একটি এলিমেন্টের জন্য true কিনা।

রুবি One মেথড

আপনি চেক করতে পারেন ঠিক একটি এলিমেন্ট true রিটার্ন করে কিনা one? মেথড দিয়ে।

এখানে একটি উদাহরণ:

 ["a", 1, {}].one? { |obj| obj.kind_of?(Hash) } # true 

আপনি এটি ব্লক ছাড়াও ব্যবহার করতে পারেন অ্যারেতে ঠিক একটিTruthy ভ্যালু আছে কিনা চেক করতে (যেকোনো কিছু false / nil বাদে)।

 ["a"].one? # true [].one? # false [nil].one? # false 

আমি size == 1-এর সাথে থাকব কারণ এটি আরও এক্সপ্লিসিট। সবাই সেটি বুঝতে পারবে এমনকি যদি তারা one? মেথডটি না জানেন, যা সেটাই কমন নয়।

রুবি ২.৫-এ নতুন ফিচার

রুবি ২.৫ থেকে এই ৪টি মেথড (any? / all? / none? / one?) একটি আর্গুমেন্টও নেয় যা grep-এর আর্গুমেন্টর মত কাজ করে।

আমি কী বোঝাতে চাচ্ছি:

 [:orange, :apple, :coconut].any?(Symbol) # true [1,2,3].all?(1..10) # true 

আপনি যদি ক্লাস, রেগুলার এক্সপ্রেশন বা রেঞ্জ চেক করতে চান তবে এটি একটি সুন্দর শর্টকাট।

সারসংক্ষেপ

আপনি ৪টি অসাধারণ রুবি মেথড শিখেছেন যা আপনাকে অনেক কাজ বাঁচাতে পারে! এই মেথডগুলো শুধু true বা false রিটার্ন করে।

আপনি যদি এখনো এই মেথডগুলো ব্যবহার করেননি… কেন এখন ট্রাই করবেন না?

আপনি যদি এটি উপকারী পান তবে দয়া করে এই আর্টিকেলটি শেয়ার করুন।


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

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

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

  4. রুবি Struct ও OpenStruct: দক্ষ ভ্যালু অবজেক্টস