Подтвердить что ты не робот

Ruby: Как перебирать диапазон, но с установленными приращениями?

Итак, я повторяю диапазон таким образом:

(1..100).each do |n|
    # n = 1
    # n = 2
    # n = 3
    # n = 4
    # n = 5
end

Но то, что я хотел бы сделать, это повторить на 10.

Таким образом, вместо увеличения n на 1, следующий n будет фактически равен 10, затем 20, 30 и т.д. и т.д.

4b9b3361

Ответ 2

rng.step(n=1) {| obj | block } => rng

Итерирует по rng, передавая каждый n-й элемент в блок. Если диапазон содержит числа или строки, используется естественный порядок. В противном случае step вызывает succ для итерации элементов диапазона. В следующем коде используется класс Xs, который определен в документации на уровне класса.

range = Xs.new(1)..Xs.new(10)
range.step(2) {|x| puts x}
range.step(3) {|x| puts x}

дает:

1 x
3 xxx
5 xxxxx
7 xxxxxxx
9 xxxxxxxxx
1 x
4 xxxx
7 xxxxxxx
10 xxxxxxxxxx

Ссылка: http://ruby-doc.org/core/classes/Range.html

......

Ответ 3

Вы можете использовать Numeric#step.

0.step(30,5) do |num|
  puts "number is #{num}"
end
# >> number is 0
# >> number is 5
# >> number is 10
# >> number is 15
# >> number is 20
# >> number is 25
# >> number is 30

Ответ 4

Вот еще один, возможно, более знакомый способ сделать это:

for i in (0..10).step(2) do
    puts i
end