Ruby - 反向数组算法

Ruby - reverse array algorithm

我正在尝试编写一种方法,该方法将字符串数组作为其参数,并且 returns array.reverse 没有实际使用反向(使用 Ruby)。我的大部分尝试都导致将 nils 添加到数组中。我无法追踪这个算法。你有解决方案吗?

def reverse a; a.inject([], :unshift) end

reverse(["a", "b", "c"]) # => ["c", "b", "a"]

有很多方法可以做到这一点。这是一个:

a = (1..10).to_a
  #=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

b = a.dup
a.size.times.with_object([]) { |_,c| c << b.pop }
  #=> [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] 

一个非常简单的方法如下:

def reverser(array)
  reversed = Array.new
  array.length.times { reversed << array.pop }
  reversed
end

我们只是弹出数组的最后一个元素并将其推入一个新数组,直到我们对数组的所有元素都这样做。