Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ruby Queue to Array

Is there a way other than this to get all the elements of the queue object?

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

I was trying something like this:

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

But that returns an empty array.

like image 235
Jakub Zak Avatar asked Dec 27 '15 14:12

Jakub Zak


3 Answers

Array.new(queue.size) { queue.pop }
like image 89
Moriarty Avatar answered Nov 10 '22 04:11

Moriarty


Using Integer#times, Enumerable#map:

def to_a queue
  queue.size.times.map { queue.pop }
end
like image 24
falsetru Avatar answered Nov 10 '22 03:11

falsetru


I would write something like:

def method(queue)
  [].tap { |array| array << queue.pop until queue.empty? }
end
like image 2
spickermann Avatar answered Nov 10 '22 02:11

spickermann