range = (0..10)
我怎么能得到这样的数字:
0 5 10
每次加5次但不到10次
如果range =(0..20)那么我应该得到这个:
0 5 10 15 20
答案 0 :(得分:25)
尝试使用.step()
完成指定步骤。
(0..20).step(5) do |n|
print n,' '
end
...给出
0 5 10 15 20
正如dominikh所述,您可以在最后添加.to_a
以获取可存储的数字列表形式:(0..20).step(5).to_a
答案 1 :(得分:4)
(0..20).step(5).to_a # [0, 5, 10, 15, 20]
答案 2 :(得分:2)
http://ruby-doc.org/core/classes/Range.html中描述的step
方法可以完成这项工作,但严重危害 可能会损害的可读性。
考虑一下:
(0..20).step(5){|n| print ' first ', n }.each{|n| print ' second ',n }
您可能认为步骤(5)会产生一个新的范围,就像_ 的问题最初的意图一样。但是如果要“重用”0-5-10-15-20范围,则每个都在(0..20)上调用并且必须由另一个步骤(5)替换。
也许你可以使用像(0..3).map{|i| i*5}
这样的东西?
但“持久”使用 .to_a
的步骤方法的结果也应该正常。