0

我有一个范围(1000..0),我正在使用each,但它没有做任何事情。我试图将其转换为数组并得到一个空数组。

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

有什么方法可以使用(1000..0).each,所以它会做重复,或者转换成一个像这样的数组[1000,999,998,...,0]

4

4 回答 4

4
1000.downto(0).each { |i| ... }        
于 2013-02-11T18:14:09.030 回答
0

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

于 2013-02-11T18:10:07.823 回答
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
于 2013-02-11T18:10:56.883 回答
0
#1000 item array
step_down_array = 1000.step(0, -1).to_a

#small enumerator:
step_down = 1000.step(0, -1)
于 2013-02-11T19:16:50.483 回答