Як зробити цей тип циклу 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 або кожен:
Аж до:
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 має штраф за цикл / вхід (це просто ніхто не використовує):
ar = [1,2,3,4,5,6]
for item in ar
puts item
end
Синтаксис циклу перелічення Ruby відрізняється:
collection.each do |item|
...
end
Це читається як "виклик методу 'кожен' екземпляра об'єкта масиву 'колекція', який приймає блок із аргументом" blockargument ". Синтаксис блоку в Ruby - це "do ... end" або "{...}" для однорядкових операторів.
Аргумент блоку '| item |' є необов’язковим, але якщо надано, перший аргумент автоматично представляє циклічний перерахований елемент.