রুবিতে লুপের জন্য সিনট্যাক্স


87

আমি রুবিতে লুপের জন্য এই জাতীয় কীভাবে করব?

for(int i=0; i<array.length; i++) {

}

@ জোহান্নেস একটি বই পড়া ভাল ধারণা, তবে সম্ভবত রুবি ১.6 সম্পর্কে একটি নয়!
অ্যান্ড্রু গ্রিম

রুবি-ডক-এর কয়েকটি দরকারী পদ্ধতির দিকে একবার নজর দিতে ভুলবেন না : অঙ্কিত মডিউল
ইভান চৌউ

উত্তর:


118
array.each do |element|
  element.do_stuff
end

বা

for element in array do
  element.do_stuff
end

আপনার যদি সূচকের প্রয়োজন হয় তবে আপনি এটি ব্যবহার করতে পারেন:

array.each_with_index do |element,index|
  element.do_stuff(index)
end

15
আমি একটি লুপে ইনডেক্সিংয়ের জন্য বিশেষত সন্ধান করছিলাম, এই সমাধানগুলির মধ্যে কোনওটি কীভাবে এটি করা উচিত তা তাত্ক্ষণিকভাবে পরিষ্কার করে দেয়। অপারেটিং
কোডে অ্যারে.এল দৈর্ঘ্যের

6
আমার উত্তর মনোযোগ সহকারে পড়ুন। অন্তর্ভুক্তকরণের সাথে একটি লুপিং সমাধান রয়েছে।
আইমান্তাস

8
প্রায়শই সময়, eachদুর্দান্ত। তবে কখনও কখনও আমি লুপের জন্য কেবল একটি damতিহ্যবাহী সনাতন চাই। কখনও কখনও "রুবি ওয়ে" কেবল সাধারণ বিরক্তিকর হতে পারে।
রুবেন মার্টিনেজ জুনিয়র

4
আমি রুবিতে কীভাবে ম্যানুয়ালি সূচক স্থাপন করব যাতে আমি নিজেই বাছাই করতে পারি
মুহাম্মদ উমার

6
আমি যদি পরবর্তী দুটি পুনরাবৃত্তিগুলি এড়িয়ে যেতে চাই তবে
মুহাম্মদ উমর

77
limit = array.length;
for counter in 0..limit
 --- make some actions ---
end

এটি করার অন্য উপায়টি নিম্নলিখিত

3.times do |n|
  puts n;
end

thats 0, 1, 2 মুদ্রণ করবে, তাই অ্যারে পুনরুক্তি হিসাবে ব্যবহার করা যেতে পারে

লেখকের প্রয়োজনের সাথে বৈকল্পিকটি আরও ভাল Think


29

আমি গুগল "লুপের জন্য রুবি" এর শীর্ষ লিঙ্ক হিসাবে এটিকে আঘাত করে চলেছি, তাই আমি লুপগুলির জন্য একটি সমাধান যুক্ত করতে চেয়েছিলাম যেখানে পদক্ষেপটি কেবল '1' নয়। এই ক্ষেত্রে, আপনি 'পদক্ষেপ' পদ্ধতিটি ব্যবহার করতে পারেন যা সংখ্যাসূচক এবং তারিখ অবজেক্টগুলিতে বিদ্যমান। আমি মনে করি এটি একটি 'ফর' লুপের নিকটতম অনুমান।

start = Date.new(2013,06,30)
stop = Date.new(2011,06,30)
# step back in time over two years, one week at a time
start.step(stop, -7).each do |d| 
    puts d
end

20

সমতা হবে

for i in (0...array.size)
end

বা

(0...array.size).each do |i|
end

বা

i = 0
while i < array.size do
   array[i]
   i = i + 1 # where you may freely set i to any value
end

17
array.each_index do |i|
  ...
end

এটি খুব রুবিশ নয়, তবে এটি রুবীর প্রশ্ন থেকে লুপের জন্য সর্বোত্তম উপায়


এটা অসাধারণ. এটি সত্য যে উত্তরটি eachবরং নয় each_index। +1
ড্যান রোজনস্টার্ক

12

একটি লুপটিকে নির্দিষ্ট সংখ্যক বার পুনরাবৃত্তি করতে চেষ্টা করুন:

n.times do
  #Something to be done n times
end

10

যদি আপনার অ্যারে অ্যাক্সেস করার প্রয়োজন না হয় , (লুপের জন্য কেবল একটি সাধারণ) আপনি প্রতিটি বা প্রতিটি পর্যন্ত ব্যবহার করতে পারেন :

পর্যন্ত:

1.9.3p392 :030 > 2.upto(4) {|i| puts i}
2
3
4
 => 2 

প্রতিটি:

1.9.3p392 :031 > (2..4).each {|i| puts i}
2
3
4
 => 2..4 

8

কি? ২০১০ সাল থেকে এবং কেউই উল্লেখ করেনি যে রুবির পক্ষে / ইন লুপের জন্য জরিমানা রয়েছে (এটি কেবল কেউ এটি ব্যবহার করে না):

ar = [1,2,3,4,5,6]
for item in ar
  puts item
end

4
.চ ... এর একটি সুবিধা হ'ল লুপের শেষে ব্লক অস্থায়ীভাবে সুযোগের বাইরে চলে যায়, যেখানে ... এর জন্য অস্থায়ী সুযোগটি স্কোপে রেখে দেয়।
ওয়েইন কনরাড


0

রুবির এনুমারেশন লুপ সিনট্যাক্স আলাদা:

collection.each do |item|
...
end

এটি "অ্যারে অবজেক্ট ইনস্ট্যান্স 'সংগ্রহের' প্রতিটি 'পদ্ধতির কল হিসাবে' আর্গুমেন্ট হিসাবে 'ব্লকারগমেন্ট' দিয়ে ব্লক গ্রহণ করে" এটি পড়বে। রুবির ব্লক বাক্য গঠনটি একক লাইন স্টেটমেন্টের জন্য 'ডু ... শেষ' বা '{...}'।

ব্লক আর্গুমেন্ট '| আইটেম |' isচ্ছিক তবে যদি সরবরাহ করা হয় তবে প্রথম যুক্তিটি স্বয়ংক্রিয়ভাবে লুপযুক্ত গণিত আইটেমটি উপস্থাপন করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.