Shp*_*ord 147 ruby iterator increment
所以我在这样的范围内迭代:
(1..100).each do |n|
# n = 1
# n = 2
# n = 3
# n = 4
# n = 5
end
Run Code Online (Sandbox Code Playgroud)
但我想做的是迭代10.
因此,不是增加n1,而是下一个n实际上是10,然后是20,30等.
Ber*_*sch 242
有关完整的API,请参见http://ruby-doc.org/core/classes/Range.html#M000695.
基本上你使用的step()方法.例如:
(10..100).step(10) do |n|
# n = 10
# n = 20
# n = 30
# ...
end
Run Code Online (Sandbox Code Playgroud)
Aru*_*hit 11
你可以用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
Run Code Online (Sandbox Code Playgroud)
rng.step(n=1) {| obj | block } => rng
Run Code Online (Sandbox Code Playgroud)
迭代rng,将每个第n个元素传递给块.如果范围包含数字或字符串,则使用自然排序.否则,步骤调用succ来遍历范围元素.以下代码使用类Xs,它在类级文档中定义.
range = Xs.new(1)..Xs.new(10)
range.step(2) {|x| puts x}
range.step(3) {|x| puts x}
Run Code Online (Sandbox Code Playgroud)
生产:
1 x
3 xxx
5 xxxxx
7 xxxxxxx
9 xxxxxxxxx
1 x
4 xxxx
7 xxxxxxx
10 xxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)
参考:http://ruby-doc.org/core/classes/Range.html
......
小智 5
这是另一种可能看起来更熟悉的方法:
for i in (0..10).step(2) do
puts i
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
119681 次 |
| 最近记录: |