如何使用ruby从方法创建数组

时间:2019-02-12 20:42:28

标签: ruby

我怎样才能使30分钟到8小时的时间间隔为阵列。所以这样:

[30, 60, 90, all-the-way-to,  480]

4 个答案:

答案 0 :(得分:6)

您可以使用Range和step方法,然后将其转换为Array:

(30..480).step(30).to_a

结果是:

[30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330, 360, 390, 420, 450, 480)

答案 1 :(得分:2)

您的论据是

increment =  30
duration  = 480 # 8*60

您可以使用

increment.step(by: increment, to: duration).to_a
  #=> [ 30,  60,  90, 120, 150, 180, 210, 240,
  #    270, 300, 330, 360, 390, 420, 450, 480] 

读起来不错。 Numeric#step在不使用任何块的情况下会返回一个枚举数,这就是为什么需要.to_a的原因。

答案 2 :(得分:1)

我想到了这个,但是@infused的答案更好。

a = (1..16).to_a.map{|i| i*30 }

答案 3 :(得分:0)

从范围中选择(Enumerable#select):

stop = 480
step = 30

(step..stop).select { |n| n % step == 0 }

#=> [0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330, 360, 390, 420, 450, 480]