как это
range = (0..10)
как может я получать число как это:
0 5 10
плюс пять каждых раз, но меньше чем 10
если диапазон = (0.. 20), затем я должен получить это:
0 5 10 15 20
Метод step
, описанный в http://ruby-doc.org/core/classes/Range.html , должен работать, но серьезно вредит может повредить читабельность.
Просто примите во внимание:
(0..20).step(5){|n| print ' first ', n }.each{|n| print ' second ',n }
Вы можете подумать, что шаг (5) создает новый диапазон, как изначально задумывался вопрос why_ . Но каждый вызывается в (0..20) и должен быть заменен другим шагом (5), если вы хотите «повторно использовать» диапазон 0-5-10-15-20.
Возможно, вам подойдет что-нибудь вроде (0..3) .map {| i | i * 5}
?
Но « сохраняющийся » результаты пошагового метода с .to_a
также должны работать нормально .
Попробуйте использовать .step ()
, чтобы пройти на заданном этапе.
(0..20).step(5) do |n|
print n,' '
end
дает ...
0 5 10 15 20
Как упоминал Доминик, вы можете добавить .to_a
в конце, чтобы получить сохраняемую форму списка номеров: (0..20). step (5) .to_a
Как сказал Дав, но добавьте to_a:
(0..20).step(5).to_a # [0, 5, 10, 15, 20]