О рубине?

как это

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 также должны работать нормально.