Итак, я перебираю диапазон таким образом:
(1..100).each do |n| # n = 1 # n = 2 # n = 3 # n = 4 # n = 5 end
Но то, что я хотел бы сделать, это перебирать до 10-х.на 1 следующее n будет на самом деле 10, затем 20, 30 и т. д. и т. д.
n
См. http://ruby -doc.org / core / classes / Range.html # M000695 для получения полного API.
В основном вы используете метод step(). Например:
step()
(10..100).step(10) do |n| # n = 10 # n = 20 # n = 30 # ... end
Вы можете использовать Numeric#step.
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
rng.step(n=1) {| obj | block } => rng
Итерирует по rng, передавая каждый n-й элемент в блок.Если диапазон содержит числа или строки, используется естественный порядок.В противном случае step вызывает succ для перебора элементов диапазона.В следующем коде используется класс X, определенный в документации уровня класса.
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
......
Вот еще один, возможно, более знакомый способ сделать это:
for i in (0..10).step(2) do puts i end