কীওয়ার্ড, যেমন পরবর্তী &ব্রেক রুবি প্রোগ্রামিং ভাষার অংশ, তাই আপনি যদি রুবি সম্পর্কে সম্পূর্ণ বোধগম্যতা চান তবে আপনাকে জানতে হবে তারা কীভাবে কাজ করে।
এগুলি কিসের জন্য ব্যবহৃত হয়?
আচ্ছা, রুবিতে, আমাদের কাছে সব ধরনের লুপ আছে।
লাইক :
- যখন
- যতক্ষণ
- প্রতিটি
একটি লুপ লেখার সময়, আপনি একটি পুনরাবৃত্তি এড়িয়ে যেতে বা লুপটি তাড়াতাড়ি শেষ করতে চাইতে পারেন৷
সেখানেই next &break কীওয়ার্ড আসে!
চলুন জেনে নেই কিভাবে সেগুলো ব্যবহার করতে হয়।
রুবি নেক্সট কীওয়ার্ড (পুনরাবৃত্তি এড়িয়ে যান)
next কীওয়ার্ড আপনাকে একটি পুনরাবৃত্তি এড়িয়ে যেতে দেয়।
উদাহরণ :
ধরা যাক আপনি স্ট্রিং গণনা করছেন।
এবং কিছু কারণে আপনি 4 আকারের স্ট্রিং গণনা করতে চান না।
আপনি এটি করতে পারেন৷ :
strings = ["one", "two", "four", "five"] strings.inject(0) do |sum, str| next if str.size == 4 sum + str.size end # nil
এই কোড কাজ করতে যাচ্ছে না.
আপনি শূন্য পাবেন।
কেন?
কারণ next nil ফেরত দেয় ডিফল্টরূপে, ঠিক যেমন return কল করা রিটার্ন মান ছাড়াই।
আপনি হয়তো জানেন...
inject ব্যবহার করে ব্লক দ্বারা প্রত্যাবর্তিত শেষ মানটি নেয় এবং এটি পরবর্তী পুনরাবৃত্তির প্রথম আর্গুমেন্টে পরিণত হয়৷
অন্য কথায়, sum nil হয়ে যায় .
সমাধান?
next পরিবর্তন করুন এই লাইনে:
next sum if str.size == 4
এটি next করে sum এর মান ফেরত দিন .
যদি কর্মক্ষমতা সর্বোচ্চ অগ্রাধিকার না হয় (প্রায়শই এটি হয় না), তাহলে আপনি next ব্যবহার করা এড়াতে অ্যারেটিকে প্রি-ফিল্টার করতে পারেন .
অথবা আরও ভালো :
strings = ["one", "two", "four", "five"]
strings.inject(0) { |sum, str| str.size == 4 ? sum : sum + str.size }
# 6
এটি একটি টার্নারি অপারেটর৷
৷
আমি মনে করি রুবি আপনাকে next ব্যবহার করা এড়াতে যথেষ্ট সরঞ্জাম দেয় .
তাদের ব্যবহার করুন!
রুবি ব্রেক কীওয়ার্ড (লুপ তাড়াতাড়ি প্রস্থান করুন)
break কীওয়ার্ড next এর মত , কিন্তু এটি লুপ শেষ করে এবং শুধুমাত্র একটি পুনরাবৃত্তি এড়িয়ে যাওয়ার পরিবর্তে একটি মান প্রদান করে।
এটি একটি লুপ থেকে একটি প্রাথমিক রিটার্নের জন্য ব্যবহার করা যেতে পারে।
কেন
returnব্যবহার করবেন না কীওয়ার্ড? কারণ এটি বর্তমান পদ্ধতি থেকে প্রস্থান করবে, শুধু লুপ নয়।
অথবা একটি শর্তহীন লুপ শেষ করতে।
এরকম :
count = 0 loop do break if count == 10 puts count count += 1 end
এটি 0 থেকে 9 পর্যন্ত সংখ্যার একটি তালিকা প্রিন্ট করে।
একটি ভাল বিকল্প হল times ব্যবহার করা পদ্ধতি, upto পদ্ধতি, অথবা একটি পরিসর প্লাস প্রতিটি পদ্ধতি।
উদাহরণ :
0.upto(9).each(&method(:puts))
এই &method(:puts) puts কল করার একটি শর্টকাট প্রতিটি সংখ্যার জন্য।
বিভ্রান্তি এড়ানো:পরবর্তী রুবি পদ্ধতি হিসাবে
কেবলমাত্র একটি কীওয়ার্ড হিসাবে কিছু বিদ্যমান থাকার কারণে, এর অর্থ এই নয় যে এটি একটি পদ্ধতির নাম হিসাবে ব্যবহার করা যাবে না৷
রুবিতে কয়েকটি ক্লাস next বাস্তবায়ন করে একটি পদ্ধতি হিসাবে।
যেমন String &Integer .
উদাহরণ :
1.next # 2
ফলাফল আশ্চর্যজনক নয়, তাই না?
এটা কেমন হয় :
"zz".next # "aaa"
এটা একটু বেশি আকর্ষণীয়!
এটি কিভাবে কাজ করে?
ঠিক আছে, প্রতিটি ক্লাস তার next সংস্করণ প্রয়োগ করে , যা পরবর্তী মানের জন্য যুক্তি ধারণ করে।
পূর্ণসংখ্যার জন্য , এটি শুধুমাত্র +1 .
স্ট্রিংস-এর জন্য , এটি শেষ অক্ষরটিকে এক দ্বারা বৃদ্ধি করে (বর্ণমালার পরবর্তী / +1 সংখ্যার জন্য), তারপর যদি একটি ক্যারিওভার থাকে (9 -> 0 , z -> a ), এটি বাম দিকে পরবর্তী অক্ষর বৃদ্ধি করবে।
সারাংশ
আপনি next সম্পর্কে জেনেছেন &break রুবিতে কীওয়ার্ড, কীভাবে তারা আপনাকে পুনরাবৃত্তি এড়িয়ে যেতে সাহায্য করে, বা তাড়াতাড়ি লুপ বন্ধ করতে।
এখন আপনার রুবি দক্ষতা অনুশীলন করার পালা 🙂
পড়ার জন্য ধন্যবাদ!