Method: Enumerable#each_with_object
- Defined in:
- lib/passive_support/core_ext/enumerable.rb
#each_with_object(memo, &block) ⇒ Object
Iterates over a collection, passing the current element and the memo
to the block. Handy for building up hashes or reducing collections down to one object. Examples:
%w(foo bar).each_with_object({}) { |str, hsh| hsh[str] = str.upcase } #=> {'foo' => 'FOO', 'bar' => 'BAR'}
Note that you can’t use immutable objects like numbers, true or false as the memo. You would think the following returns 120, but since the memo is never changed, it does not.
(1..5).each_with_object(1) { |value, memo| memo *= value } # => 1
77 78 79 80 81 82 83 |
# File 'lib/passive_support/core_ext/enumerable.rb', line 77 def each_with_object(memo, &block) returning memo do |m| each do |element| block.call(element, m) end end end |