আমরা retry সম্পর্কে কথা বলেছি ব্যতিক্রমের পরে পুনরায় চেষ্টা করার বিষয়ে আলোচনা করার সময় কীওয়ার্ড। এর স্বল্প পরিচিত প্রতিরূপ redo একইভাবে কাজ করে, কিন্তু পুরো ব্লকের পরিবর্তে লুপ পুনরাবৃত্তি পুনরায় চালায়।
redo কীওয়ার্ড
আমরা আগের একাডেমী নিবন্ধে যেমন শিখেছি, retry আপনাকে একটি ব্লকে কোডের একটি অংশ পুনরায় চেষ্টা করতে দেয়:
begin
puts "Iteration"
raise
rescue
retry
end
এই উদাহরণটি একটি ব্যতিক্রম উত্থাপন করার আগে কনসোলে "পুনরাবৃত্তি" শব্দটি প্রিন্ট করে। রেসকিউ ব্লকগুলি কার্যকর করে, যাকে retry বলা হয় এবং শুরু থেকে আবার ব্লক শুরু করে। এর ফলে আমাদের প্রোগ্রাম অবিরামভাবে Iteration মুদ্রণ করে . redo loops ব্যবহার করার সময় কীওয়ার্ড আপনাকে অনুরূপ প্রভাব অর্জন করতে দেয়। এটি এমন পরিস্থিতিতে দরকারী যেখানে আপনাকে পুনরাবৃত্তি করার সময় পুনরায় চেষ্টা করতে হবে৷
10.times do |i|
puts "Iteration #{i}"
redo if i > 2
end এটি প্রিন্ট করবে:
$ ruby redo.rb
Iteration 0
Iteration 1
Iteration 2
Iteration 3
Iteration 3
Iteration 3
...
লক্ষ্য করুন কিভাবে পুনরাবৃত্তি গণনা একই থাকে? এটি লুপের শুরুতে এক্সিকিউশনকে পিছিয়ে দেবে। retry ব্যবহার করে কোডের এই রূপ ঠিক একই আউটপুট প্রিন্ট করবে:
10.times do |i|
begin
puts "Iteration #{i}"
raise if i > 2
rescue
retry
end
end
আপনি redo ব্যবহার করতে পারেন একটি লুপে পুনঃচেষ্টা বাস্তবায়ন করতে। পরবর্তী উদাহরণে আমরা কাজের একটি সারি আছে. তারা হয় :success ফেরত দেয় অথবা :failure . কাজ সফল না হওয়া পর্যন্ত আমরা লুপের একই পুনরাবৃত্তি পুনরায় চালাতে থাকি।
[job_1, job_2, job_3, job_4].each do |job|
redo unless job.call == :success
end রুবি 1.8
retry এর আচরণ এবং redo রুবি 1.8 এবং 1.9 এর মধ্যে পরিবর্তিত হয়েছে৷ তারা লুপের পুনরাবৃত্তি পুনঃসূচনা করত, কিন্তু উভয়ই ভিন্ন উপায়ে। 1.9 থেকে, retry শুধুমাত্র একটি begin দিয়ে কাজ করে /rescue ব্লক করুন এবং redo শুধুমাত্র লুপের মধ্যে কাজ করে৷
next কীওয়ার্ড
আপনি যদি লুপের পরবর্তী পুনরাবৃত্তিতে যেতে চান, বর্তমানের শুরুতে ফিরে যাওয়ার বিপরীতে, আপনি next ব্যবহার করতে পারেন .
10.times do |i|
puts "Iteration #{i}"
next if i > 2
puts "Iteration done"
end এটি প্রিন্ট করবে:
$ ruby next.rb
Iteration 0
Iteration done
Iteration 1
Iteration done
Iteration 2
Iteration done
Iteration 3
Iteration 4
...
দেখুন কিভাবে পুনরাবৃত্তি কাউন্টার ক্রমবর্ধমান রাখে? বেশিরভাগ ক্ষেত্রে next ব্যবহার করে আপনি কি চান. redo দেখুন আপনার যদি একটি লুপের প্রয়োজন হয় যা সঠিক সংখ্যক বার চালায় বা অ্যারের উপর পুনরাবৃত্তি করার সময় ত্রুটি পরিচালনার প্রয়োজন হয়৷
আমরা আশা করি আপনি লুপগুলিতে পুনরাবৃত্তি করার বিষয়ে নতুন কিছু শিখেছেন এবং আপনি এই নিবন্ধটি (বা AppSignal একাডেমী সিরিজের অন্য যেকোনও) সম্পর্কে কী ভেবেছেন তা জানতে পছন্দ করবেন। অনুগ্রহ করে আপনি কি মনে করেন তা আমাদের জানাতে দ্বিধা করবেন না, অথবা যদি আপনার কোন রুবি বিষয় থাকে যা সম্পর্কে আপনি আরও জানতে চান।