像这样
range = (0..10)
我怎样才能得到这样的号码:
0 5 10
每次加 5 但少于 10
如果 range = (0..20) 那么我应该得到这个:
0 5 10 15 20
尝试使用.step()
来完成给定的步骤。
(0..20).step(5) do |n|
print n,' '
end
给...
0 5 10 15 20
正如 dominikh 所提到的,您可以.to_a
在末尾添加以获得数字列表的可存储形式:(0..20).step(5).to_a
就像 Dav 说的,但是添加到_a:
(0..20).step(5).to_a # [0, 5, 10, 15, 20]
http://ruby-doc.org/core/classes/Range.htmlstep
中描述的方法应该可以完成这项工作,但是严重危害 可能会损害可读性。
只需考虑:
(0..20).step(5){|n| print ' first ', n }.each{|n| print ' second ',n }
您可能会认为 step(5) 会产生一个新的 Range,就像Why_最初打算提出的问题一样。但是如果要“重用” 0-5-10-15-20 范围,则 each 在 (0..20) 上调用,并且必须由另一个 step(5) 替换。
也许你会喜欢这样的东西(0..3).map{|i| i*5}
?
但是“坚持”步骤方法的结果 .to_a
也应该可以正常工作。