Ruby 队列到数组

Ruby Queue to Array

有没有其他方法可以获取队列对象的所有元素?

def method queue
    array = []
    until queue.empty? do
        array << queue.pop
    end
    array
end

我正在尝试这样的事情:

def method queue
    Array(until queue.empty? do queue.pop end)
end

但是 returns 一个空数组。

使用Integer#times, Enumerable#map:

def to_a queue
  queue.size.times.map { queue.pop }
end

我会这样写:

def method(queue)
  [].tap { |array| array << queue.pop until queue.empty? }
end
Array.new(queue.size) { queue.pop }

所有这些答案都会清空队列,这对我不起作用。

我要去:

class Queue
  def to_a
    @que.dup
  end
end