আমি কেবল রুবির ইন লুপ সম্পর্কে একটি নির্দিষ্ট পয়েন্ট তৈরি করতে চাই। এটি অন্য ভাষার মতো নির্মাণের মতো মনে হতে পারে তবে এটি রুবির প্রতিটি লুপিং কনস্ট্রাক্টের মতোই একটি অভিব্যক্তি। প্রকৃতপক্ষে, জন্য প্রতিটি প্রতিটি পুনরাবৃত্তকারীর মতো গণ্য অবজেক্টের সাথে কাজ করে।
সংগ্রহটি পাসের জন্য যে কোনও বস্তু হতে পারে যার প্রতিটি পুনরুক্তি পদ্ধতি রয়েছে। অ্যারে এবং হ্যাশগুলি প্রতিটি পদ্ধতিকে সংজ্ঞায়িত করে এবং অন্যান্য অনেক রুবি বস্তুও তা করে। For / in লুপ নির্দিষ্ট বস্তুর প্রতিটি পদ্ধতিকে কল করে। যেটি পুনরাবৃত্তকারী মান দেয়, লুপের জন্য প্রতিটি মান (বা মানগুলির প্রতিটি সেট) নির্দিষ্ট ভেরিয়েবল (বা ভেরিয়েবল )গুলিতে নির্ধারিত করে এবং তারপরে শরীরে কোডটি কার্যকর করে।
এটি একটি নির্বোধ উদাহরণ, তবে বিন্দুটি চিত্রিত করে যে ইন ইন লুপটি যে কোনও একটি অবজেক্টের সাথে কাজ করে যার প্রতিটি পদ্ধতি রয়েছে, যেমন প্রতিটি পুনরুক্তিকারী কীভাবে করে:
class Apple
TYPES = %w(red green yellow)
def each
yield TYPES.pop until TYPES.empty?
end
end
a = Apple.new
for i in a do
puts i
end
yellow
green
red
=> nil
এবং এখন প্রতিটি পুনরুক্তি:
a = Apple.new
a.each do |i|
puts i
end
yellow
green
red
=> nil
আপনি দেখতে পাচ্ছেন, উভয়ই প্রতিটি পদ্ধতিতে প্রতিক্রিয়া জানাচ্ছে যা ব্লকে ফিরে মান দেয়। এখানে সবাই যেমন বলেছে, প্রতিটি লৌকিকটি অবশ্যই ইন-লুপের উপরে ব্যবহার করা ভাল। আমি কেবল বাড়িতে এই পয়েন্টটি চালাতে চেয়েছিলাম যে ইন লুপটির জন্য যাদুকর কিছুই নেই। এটি এমন একটি অভিব্যক্তি যা কোনও সংগ্রহের প্রতিটি পদ্ধতিকে অনুরোধ করে এবং তারপরে এটি কোডের ব্লকে পাস করে। সুতরাং, এটি খুব বিরল ক্ষেত্রে আপনার প্রয়োজন হবে the প্রতিটি পুনরুক্তি প্রায় সর্বদা ব্যবহার করুন (ব্লক স্কোপের অতিরিক্ত সুবিধা সহ)।