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