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