Как мне сделать этот тип цикла for в Ruby?
for(int i=0; i<array.length; i++) {
}
Как мне сделать этот тип цикла for в Ruby?
for(int i=0; i<array.length; i++) {
}
Ответы:
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
each
это здорово. Но иногда мне просто нужен чертовски традиционный цикл for. Иногда «Рубиновый путь» может просто раздражать.
Я продолжаю нажимать на эту ссылку как на главную ссылку для Google "ruby for loop", поэтому я хотел добавить решение для циклов, где шаг не был просто "1". В этих случаях вы можете использовать метод step, который существует для объектов Numerics и Date. Я думаю, что это близкое приближение к циклу 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
Это не очень Rubyish, но это лучший способ сделать цикл for из вопроса в Ruby
each
а скорее each_index
. +1
Если вам не нужен доступ к вашему массиву (просто цикл for), вы можете использовать upto или each:
Вплоть до:
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
Какие? С 2010 года, и никто не упоминал, что у Ruby есть штраф для цикла for / in (его просто никто не использует):
ar = [1,2,3,4,5,6]
for item in ar
puts item
end
Синтаксис цикла перечисления Ruby отличается:
collection.each do |item|
...
end
Это читается как «вызов метода 'each' экземпляра объекта массива 'collection', который принимает блок с 'аргументом блока' в качестве аргумента». Синтаксис блока в Ruby - do ... end или {...} для однострочных операторов.
Аргумент блока '| item |' не является обязательным, но если он указан, первый аргумент автоматически представляет зацикленный элемент перечисления.