Ruby'de bu tür for döngüsünü nasıl yaparım?
for(int i=0; i<array.length; i++) {
}
Ruby'de bu tür for döngüsünü nasıl yaparım?
for(int i=0; i<array.length; i++) {
}
Yanıtlar:
array.each do |element|
element.do_stuff
end
veya
for element in array do
element.do_stuff
end
Dizine ihtiyacınız varsa, bunu kullanabilirsiniz:
array.each_with_index do |element,index|
element.do_stuff(index)
end
each
harika. Ama bazen sadece lanet olası geleneksel bir döngü istiyorum. Bazen "Ruby yöntemi" sadece can sıkıcı olabilir.
Bunu, google "ruby for loop" için bir üst bağlantı olarak tutmaya devam ediyorum, bu nedenle adımın basitçe "1" olmadığı döngüler için bir çözüm eklemek istedim. Bu durumlar için Numerics ve Date nesnelerinde bulunan 'step' yöntemini kullanabilirsiniz. Bunun bir 'for' döngüsü için yakın bir yaklaşım olduğunu düşünüyorum.
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
array.each_index do |i|
...
end
Çok Yakutça değil, ancak Ruby'de sorudan for döngüsünü yapmanın en iyi yolu
each
daha ziyade olduğu doğru each_index
. +1
Eğer varsa dizinizi erişmek gerekmez , (döngü sadece basit) kullanabilirsiniz kadar ya da her:
Şuna kadar:
1.9.3p392 :030 > 2.upto(4) {|i| puts i}
2
3
4
=> 2
Her biri:
1.9.3p392 :031 > (2..4).each {|i| puts i}
2
3
4
=> 2..4
Ne? 2010'dan beri ve hiç kimse Ruby'nin para cezası olduğundan bahsetmedi (sadece kimse kullanmıyor):
ar = [1,2,3,4,5,6]
for item in ar
puts item
end
Ruby'nin numaralandırma döngüsü sözdizimi farklıdır:
collection.each do |item|
...
end
Bu, "bağımsız değişken olarak 'blok argüman' ile bloğu alan 'koleksiyon' dizi nesnesi örneğinin 'her' yöntemine bir çağrı" olarak okunur. Ruby'deki blok sözdizimi, tek satırlı ifadeler için 'do ... end' veya '{...}' şeklindedir.
Blok argümanı '| öğe |' isteğe bağlıdır, ancak sağlanırsa, ilk bağımsız değişken otomatik olarak döngülü numaralandırılmış öğeyi temsil eder.