如何将降压范围转换为数组?

时间:2013-02-11 18:00:18

标签: ruby

我有(1000..0)这样的范围,而我使用的是each,但它没有做任何事情。我试图将它转换为数组并获得一个空数组。

我也试过(1000..0).step(-1).each,它告诉我step cant be negative ...

有没有办法使用(1000..0).each所以它会重复,或转换为像[1000,999,998,...,0]这样的数组?

4 个答案:

答案 0 :(得分:4)

1000.downto(0).each { |i| ... }        

答案 1 :(得分:0)

(0..1000).to_a.reverse 这将创建所需的数组。

答案 2 :(得分:0)

你可能会采取两种方式:

(0..1000).each do |i|
  n = 1000 - i
  # Use n for all calculations
end

(0..1000).to_a.reverse.each do |n|
  # Involves creating temporary array, but overhead is usually minor for
  # relatively small numbers.
end

不要忘记你也可以在没有范围的情况下这样做:

1001.times do |i|
  n = 1000 - i
end

答案 3 :(得分:0)

#1000 item array
step_down_array = 1000.step(0, -1).to_a

#small enumerator:
step_down = 1000.step(0, -1)