关于ruby系列?

像这样

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以获得一个可存储的数字列表forms: (0..20).step(5).to_a

就像戴维斯说的那样,但是加上to_a:

 (0..20).step(5).to_a # [0, 5, 10, 15, 20] 

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} (0..3).map{|i| i*5}

但是, 使用 .to_a持久步骤方法的结果 也应该可以正常工作