Jak zrobić tego typu pętlę for w Rubim?
for(int i=0; i<array.length; i++) {
}
Jak zrobić tego typu pętlę for w Rubim?
for(int i=0; i<array.length; i++) {
}
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
each
jest świetny. Ale czasami chcę po prostu cholernie tradycyjną pętlę for. Czasami „droga Ruby” może być po prostu denerwująca.
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
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
each
ale raczej each_index
. +1
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
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
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.