о рубиновом диапазоне?

как это

range = (0..10)

как может я получать число как это:

0 5 10 

плюс пять каждых раз, но меньше чем 10

если диапазон = (0.. 20), затем я должен получить это:

0 5 10 15 20
16
задан Amber 6 April 2010 в 09:07
поделиться

3 ответа

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

2
ответ дан 30 November 2019 в 17:38
поделиться

Попробуйте использовать .step () , чтобы пройти на заданном этапе.

(0..20).step(5) do |n|
    print n,' '
end

дает ...

0 5 10 15 20

Как упоминал Доминик, вы можете добавить .to_a в конце, чтобы получить сохраняемую форму списка номеров: (0..20). step (5) .to_a

25
ответ дан 30 November 2019 в 17:38
поделиться

Как сказал Дав, но добавьте to_a:

(0..20).step(5).to_a # [0, 5, 10, 15, 20]
4
ответ дан 30 November 2019 в 17:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: