আমি each.with_indexএবং এর মধ্যে পার্থক্য সম্পর্কে সত্যিই বিভ্রান্ত each_with_index। এগুলির বিভিন্ন প্রকার রয়েছে তবে অনুশীলনে এটি অভিন্ন বলে মনে হচ্ছে।
উত্তর:
with_indexপদ্ধতি শুরুর সূচক অফসেট একটি ঐচ্ছিক প্যারামিটার নেয়। each_with_indexএকই জিনিস, কিন্তু কোন বিকল্প startingচ্ছিক সূচক আছে।
উদাহরণ স্বরূপ:
[:foo, :bar, :baz].each.with_index(2) do |value, index|
puts "#{index}: #{value}"
end
[:foo, :bar, :baz].each_with_index do |value, index|
puts "#{index}: #{value}"
end
ফলাফল:
2: foo
3: bar
4: baz
0: foo
1: bar
2: baz
each_with_indexএর আগে রুবির সাথে পরিচয় হয়েছিল। with_indexপরে চালু হয়েছিল:
0।আজ, with_indexসাধারণতা এবং পঠনযোগ্যতার দৃষ্টিকোণ থেকে ব্যবহার করা ভাল হবে তবে কোডটি গতি বাড়ানোর দৃষ্টিকোণ থেকে, each_with_indexকিছুটা দ্রুত গতিতে চলেছে each.with_index।
আপনি যখন মনে করেন যে কয়েকটি পদ্ধতির সোজা চেইন দ্বারা কোনও একক পদ্ধতি সহজেই প্রকাশ করা যেতে পারে, তবে সাধারণত একক পদ্ধতি চেইনের চেয়ে দ্রুত হয়। এর আর একটি উদাহরণ হিসাবে, তার reverse_eachচেয়ে দ্রুত চলে reverse.each। এই পদ্ধতিগুলির অস্তিত্বের কারণ রয়েছে।
reverseউদাহরণস্বরূপ, reverseঅন্য অ্যারের, এবং একটি গণনাকারী ফিরে আসছে। যদি এটি কোনও গণককে ফেরত দেয় তবে ভাল প্রয়োগের সাথে ধীর হওয়া উচিত ছিল না।
with_indexশুরুর সূচক অফসেট অনুমতি দেয়,with_indexসাধারণত যখন সাথে ব্যবহার পছন্দ করা হয়map,reduce,collect, ইত্যাদি সংক্ষেপে,map.with_indexবেশী ভালো লেখাeach_with_index.map। এক অর্থে, যখন এটি ব্যবহার করা হয়map, এটি অস্তিত্বহীনmap_with_indexপদ্ধতির জন্য একটি স্ট্যান্ড-ইন ।