কম্পিউটার

রুবি রেঞ্জ:তারা কিভাবে কাজ করে?

রুবিতে একটি পরিসর কী এবং এটি কীভাবে কাজ করে?

একটি পরিসীমা এমন একটি বস্তু যার একটি প্রারম্ভিক মান এবং সমাপ্তি মান রয়েছে, তারা আপনাকে এই দুটি মানের মধ্যে পুরো পরিসরকে বিস্তৃত ক্রম তৈরি করতে সহায়তা করে৷

আপনি 1 থেকে যেতে পারেন 20 এ , অথবা "a" থেকে "z"-এ .

এই নিবন্ধে আপনি আবিষ্কার করবেন :

  • কিভাবে রুবি রেঞ্জ তৈরি করবেন
  • কিভাবে step ব্যবহার করবেন &include? রুবি
  • তে পদ্ধতি
  • কিভাবে রেঞ্জগুলি হুডের নিচে কাজ করে

এটা করা যাক!

রেঞ্জ বোঝা

শুধু একটি অনুস্মারক হিসাবে, এটি রুবি পরিসরের সিনট্যাক্সের মত দেখাচ্ছে:

(1..20)

Range সংজ্ঞায়িত করার জন্য বন্ধনীর প্রয়োজন নেই .

কিন্তু আপনি যদি আপনার পরিসরে পদ্ধতিগুলিকে কল করতে চান তবে আপনার সেগুলির প্রয়োজন হবে৷ অন্যথায়, আপনি পরিসরের 2য় উপাদানের পদ্ধতিটিকে সীমার পরিবর্তে কল করছেন৷

Range ক্লাসে গণনাযোগ্য অন্তর্ভুক্ত রয়েছে, তাই আপনি পরিসরটিকে অ্যারেতে রূপান্তর না করেই সমস্ত শক্তিশালী পুনরাবৃত্তি পদ্ধতি পাবেন৷

রুবি ধাপ পদ্ধতি

Range কিছু দরকারী পদ্ধতি আছে, যেমন step পদ্ধতি।

উদাহরণ :

(10..20) ধাপ(2).to_a# [10, 12, 14, 16, 18, 20] 

এই পদ্ধতিটি ব্যবহার করে আপনি n এর বৃদ্ধির পরিসরে পুনরাবৃত্তি করতে পারেন , যেখানে n যুক্তি হল step এ পাস করা .

কীভাবে খুঁজে বের করতে হয় যদি একটি সংখ্যা একটি পরিসরের মধ্যে থাকে

অন্যান্য Range যে পদ্ধতিগুলি সম্পর্কে সচেতন হতে হবে তা হল:cover? &include? .

এটা ভাবা ভুল হবে যে তারা একই কাজ করে, কারণ তারা তা করে না।

include? আপনি যা আশা করবেন পদ্ধতিটি ঠিক তাই করে, পরিসরের ভিতরে অন্তর্ভুক্তির জন্য পরীক্ষা করুন। তাই এটি Range প্রসারিত করার সমতুল্য হবে একটি Array-এ এবং সেখানে কিছু আছে কিনা তা পরীক্ষা করা।

কিন্তু cover? ভিন্ন, এটি যা করে তা হল পরিসরের প্রাথমিক এবং শেষ মানের বিপরীতে পরীক্ষা করা (begin <= obj <= end ), যা অপ্রত্যাশিত ফলাফল দিতে পারে।

উদাহরণ :

('a'..'z').অন্তর্ভুক্ত? "cc" # মিথ্যা('a'..'z').কভার? "cc" # সত্য

cover? উদাহরণ এর সমতুল্য:

"a" <="cc" &&"cc" <="z"

কারণ এটি true ফেরত দেয় যে স্ট্রিংগুলি অক্ষর দ্বারা অক্ষর তুলনা করা হয় . যেহেতু "c" এর আগে "a" আসে, তাই প্রথম "c" এর পরে আসা অক্ষরগুলো কোন ব্যাপার না।

রুবিতে কীভাবে পরিসীমা প্রয়োগ করা হয়

রেঞ্জগুলি সংখ্যা এবং অক্ষরের মধ্যে সীমাবদ্ধ নয়, আপনি যে কোনও অবজেক্ট ব্যবহার করতে পারেন যতক্ষণ না তারা নিম্নলিখিত পদ্ধতিগুলি প্রয়োগ করে:<=> এবং succ .

উদাহরণস্বরূপ, এখানে একটি তারিখ সময় পরিসীমা:

require 'time't1 =DateTime.newt2 =DateTime.new + 30next_30_days =t1..t2# উদাহরণ usenext_30_days.select(&:friday?).map(&:day)

তাহলে এটা কিভাবে কাজ করে? আসুন এই বাস্তবায়নটি একবার দেখে নেওয়া যাক:

def রেঞ্জ(a, b) # যদি প্রথম এলিমেন্টটি দ্বিতীয় # এর থেকে বড় হয় তাহলে এটি একটি ক্রমিক রেঞ্জ রিটার্ন নয় [] যদি a> b out =[] # অগ্রিম না হওয়া পর্যন্ত ২য় এলিমেন্ট একই হয় # প্রথমটি হিসাবে যখন a !=b আউট < 

কি ঘটছে তা বুঝতে আপনাকে সাহায্য করার জন্য আমি কিছু মন্তব্য যোগ করেছি৷

ধারণাটি হল যে আমরা প্রথম অবজেক্টের পরবর্তী পদ্ধতিটিকে কল করতে থাকি যতক্ষণ না এটি দ্বিতীয়টির সমান হয়, ধারণা করা হয় যে তারা শেষ পর্যন্ত মিলিত হবে।

কাস্টম ক্লাস রেঞ্জ

বেশিরভাগ সময় আপনি সংখ্যা এবং অক্ষর ব্যাপ্তি ব্যবহার করবেন, তবে আপনি কীভাবে একটি কাস্টম ক্লাসে রেঞ্জ ব্যবহার করতে পারেন তা জেনে রাখা ভাল৷

উদাহরণ :

class LetterMultiplier attr_reader :count include Comparable def initialize(letter, count) @letter =letter @count =count end def succ self.class.new(@letter, @count + 1) end def <=>(অন্যান্য) count <=> other.count endenda =LetterMultiplier.new('w', 2)b =LetterMultiplier.new('w', 8)# রেঞ্জপ অ্যারে(a..b) এর সমস্ত আইটেম সহ অ্যারে মুদ্রণ করুন প্রাক> 

এখানে মূল বিষয় হল আপনি <=> প্রয়োগ করছেন তা নিশ্চিত করা &succ পদ্ধতি সঠিকভাবে।

আপনি যদি include? ব্যবহার করতে চান পদ্ধতিতে আপনাকে Comparable অন্তর্ভুক্ত করতে হবে মডিউল, যা == এর মত পদ্ধতি যোগ করে , < , এবং > (সমস্তই <=> এর ফলাফলের উপর ভিত্তি করে পদ্ধতি)।

উপসংহার

এই নিবন্ধে আপনি রুবিতে রেঞ্জগুলি কীভাবে কাজ করে তা শিখেছেন যাতে আপনি সেগুলিকে আরও ভালভাবে বুঝতে এবং আপনার নিজস্ব অবজেক্টগুলি বাস্তবায়ন করতে পারেন যা রেঞ্জ অপারেশনগুলিকে সমর্থন করে৷

নিচের নিউজলেটারে সাবস্ক্রাইব করতে ভুলবেন না যাতে আপনি পরবর্তী পোস্টটি মিস না করেন 🙂


  1. একটি ম্যাট্রিক্স কি এবং রুবিতে এটি কীভাবে ব্যবহার করবেন?

  2. রুবি 2.6-এ MJIT কী এবং এটি কীভাবে কাজ করে?

  3. রুবিতে স্ট্রাকট এবং ওপেনস্ট্রাক্ট কীভাবে ব্যবহার করবেন

  4. কিভাবে স্পটিফাই প্লেলিস্টকে সহযোগিতামূলক করা যায় এবং কীভাবে তারা কাজ করে