szukałem konkretnie indeksowania w pętli, żadne z tych rozwiązań nie od razu wskazuje, jak to zrobić. operacja zdradziła swoje zamiary z array.length w kodzie ...
jheriko
6
Przeczytaj uważnie moją odpowiedź. Jest rozwiązanie pętli z dołączonym indeksowaniem.
Eimantas
8
Często eachjest świetny. Ale czasami chcę po prostu cholernie tradycyjną pętlę for. Czasami „droga Ruby” może być po prostu denerwująca.
Ruben Martinez Jr.
1
Jak ręcznie ustawić indeksu w Ruby więc mogę napisać coś w sobie
Muhammad Umer
6
co jeśli chcę pominąć kolejne dwie iteracje
Muhammad Umer
77
limit = array.length;
for counter in0..limit
--- make some actions ---
end
inny sposób, aby to zrobić, jest następujący
3.times do|n|
puts n;
end
to wypisze 0, 1, 2, więc może być również użyte jako iterator tablicy
Pomyśl, że wariant lepiej pasuje do potrzeb autora
Wciąż klikam to jako górny link do google „ruby for loop”, więc chciałem dodać rozwiązanie dla pętli, w których krok nie był po prostu „1”. W takich przypadkach można użyć metody „step”, która istnieje w obiektach Numerics i Date. Myślę, że jest to bliskie przybliżenie pętli „for”.
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
Czyta się to jako „wywołanie metody„ each ”instancji obiektu tablicy„ collection ”, która przyjmuje blok z argumentem„ blockargument ”. Składnia bloków w Rubim to „do ... end” lub „{...}” dla instrukcji jednowierszowych.
Argument blokowy „| item |” jest opcjonalny, ale jeśli jest podany, pierwszy argument automatycznie reprezentuje zapętlony wyliczany element.
Odpowiedzi:
array.each do |element| element.do_stuff end
lub
for element in array do element.do_stuff end
Jeśli potrzebujesz indeksu, możesz użyć tego:
array.each_with_index do |element,index| element.do_stuff(index) end
źródło
each
jest świetny. Ale czasami chcę po prostu cholernie tradycyjną pętlę for. Czasami „droga Ruby” może być po prostu denerwująca.limit = array.length; for counter in 0..limit --- make some actions --- end
inny sposób, aby to zrobić, jest następujący
3.times do |n| puts n; end
to wypisze 0, 1, 2, więc może być również użyte jako iterator tablicy
Pomyśl, że wariant lepiej pasuje do potrzeb autora
źródło
Wciąż klikam to jako górny link do google „ruby for loop”, więc chciałem dodać rozwiązanie dla pętli, w których krok nie był po prostu „1”. W takich przypadkach można użyć metody „step”, która istnieje w obiektach Numerics i Date. Myślę, że jest to bliskie przybliżenie pętli „for”.
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
źródło
Równoważność byłaby
for i in (0...array.size) end
lub
(0...array.size).each do |i| end
lub
i = 0 while i < array.size do array[i] i = i + 1 # where you may freely set i to any value end
źródło
array.each_index do |i| ... end
Nie jest bardzo rubinowy, ale jest to najlepszy sposób na wykonanie pętli for z pytania w języku Ruby
źródło
each
ale raczejeach_index
. +1Aby iterować pętlę określoną liczbę razy, spróbuj:
n.times do #Something to be done n times end
źródło
Jeśli nie potrzebujesz dostępu do swojej tablicy (tylko prosta pętla for), możesz użyć upto lub each:
Upto:
1.9.3p392 :030 > 2.upto(4) {|i| puts i} 2 3 4 => 2
Każdy:
1.9.3p392 :031 > (2..4).each {|i| puts i} 2 3 4 => 2..4
źródło
Co? Od 2010 roku nikt nie wspomniał, że Ruby ma karę za pętlę for / in (po prostu nikt jej nie używa):
ar = [1,2,3,4,5,6] for item in ar puts item end
źródło
['foo', 'bar', 'baz'].each_with_index {|j, i| puts "#{i} #{j}"}
źródło
Składnia pętli wyliczenia Rubiego jest inna:
collection.each do |item| ... end
Czyta się to jako „wywołanie metody„ each ”instancji obiektu tablicy„ collection ”, która przyjmuje blok z argumentem„ blockargument ”. Składnia bloków w Rubim to „do ... end” lub „{...}” dla instrukcji jednowierszowych.
Argument blokowy „| item |” jest opcjonalny, ale jeśli jest podany, pierwszy argument automatycznie reprezentuje zapętlony wyliczany element.
źródło