だから私はそのような範囲で繰り返しています:
(1..100).each do |n|
# n = 1
# n = 2
# n = 3
# n = 4
# n = 5
end
しかし、私がやりたいのは、10単位で繰り返すことです。
したがって、n
を1ずつ増やす代わりに、次のn
は実際には10、20、30などになります。
完全なAPIについては、 http://Ruby-doc.org/core/classes/Range.html#M000695 を参照してください。
基本的に、step()
メソッドを使用します。例えば:
(10..100).step(10) do |n|
# n = 10
# n = 20
# n = 30
# ...
end
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