Alex Rivera | Logout

Clean way to return an array from X.times in Ruby

Asked 2011-10-05T03:33:09.103
16

I often want to perform an action on an array X times then return a result other than that number. The code I usually write is the following:

  def other_participants
    output =[]
    NUMBER_COMPARED.times do
      output << Participant.new(all_friends.shuffle.pop, self)
    end
    output
  end

Is there a cleaner way to do this?

Edit
Report

1 Answer

32

sounds like you could use map/collect (they are synonyms on Enumerable). it returns an array with the contents being the return of each iteration through the map/collect.

def other_participants
  NUMBER_COMPARED.times.collect do
    Participant.new(all_friends.shuffle.pop, self)
  end
end

You don't need another variable or an explicit return statement.

http://www.ruby-doc.org/core/Enumerable.html#method-i-collect

answered 2011-10-05T05:48:42.710

Your Answer