Class: Array

Inherits:
Object
  • Object
show all
Defined in:
lib/enumerable/extra.rb

Instance Method Summary collapse

Instance Method Details

#map(method = nil, *args, &block) ⇒ Object Also known as: collect

Returns a new array containing the results of running block once for every element in the array.

Examples:

array = ['foo', 'bar']

# No arguments
array.map(:capitalize) => ['Foo', 'Bar']

# With arguments
array.map(:+, 'x') => ['foox', 'barx']

# With arguments and a block
array.map(:capitalize){ |e| e + 'x' } => ['Foox', 'Barx']

Note that for 1.9.x users, Enumerator objects are converted explicitly back into arrays. – The Array class actually has its own implementation of the map method, hence the duplication.



98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/enumerable/extra.rb', line 98

def map(method=nil, *args, &block)
   if method
      array  = []
      method = method.to_sym unless method.is_a?(Symbol)

      each{ |obj|
         temp = obj.send(method, *args)
         if block
            array << block.call(temp)
         else
            array << temp
         end
      }

      RUBY_VERSION.to_f >= 1.9 ? array.to_a : array
   else
      RUBY_VERSION.to_f >= 1.9 ? old_map(&block).to_a : old_map(&block)
   end
end

#map!(method = nil, *args, &block) ⇒ Object Also known as: collect!

Same as Array#map, but modifies the receiver in place. Also note that a block is not required. If no block is given, an array of values is returned instead



122
123
124
# File 'lib/enumerable/extra.rb', line 122

def map!(method=nil, *args, &block)
   self.replace(map(method, *args, &block))
end

#old_mapObject

These methods are defined separately in array.c, and they are not actual aliases, so we must alias them each separately from Enumerable.



71
# File 'lib/enumerable/extra.rb', line 71

alias old_map map

#old_map!Object



72
# File 'lib/enumerable/extra.rb', line 72

alias old_map! map!