Search code examples
rubyarraysdictionaryeachenumerator

Returning Multiple Values From Map


Is there a way to do:

a = b.map{ |e| #return multiple elements to be added to a }

Where rather than returning a single object for each iteration to be added to a, multiple objects can be returned.

I'm currently achieving this with:

a = []
b.map{ |e| a.concat([x,y,z]) }

Is there a way to this in a single line without having to declare a = [] up front?


Solution

  • Use Enumerable#flat_map

    b = [0, 3, 6]
    a = b.flat_map { |x| [x, x+1, x+2] }
    a # => [0, 1, 2, 3, 4, 5, 6, 7, 8]