Flowdock
method

# reduce

v1_8_7_330 - Show latest stable - 0 notes - Class: Enumerable
`reduce(...)` public

enum.reduce(initial, sym) => obj enum.reduce(sym) => obj enum.reduce(initial) {| memo, obj | block } => obj enum.reduce {| memo, obj | block } => obj

```Combines all elements of <i>enum</i> by applying a binary
operation, specified by a block or a symbol that names a
method or operator.

If you specify a block, then for each element in <i>enum<i>
the block is passed an accumulator value (<i>memo</i>) and the element.
If you specify a symbol instead, then each element in the collection
will be passed to the named method of <i>memo</i>.
In either case, the result becomes the new value for <i>memo</i>.
At the end of the iteration, the final value of <i>memo</i> is the
return value fo the method.

If you do not explicitly specify an <i>initial</i> value for <i>memo</i>,
then uses the first element of collection is used as the initial value
of <i>memo</i>.

Examples:
```

# Sum some numbers (5..10).reduce(:+) #=> 45 # Same using a block and inject (5..10).inject {|sum, n| sum + n } #=> 45 # Multiply some numbers (5..10).reduce(1, :*) #=> 151200 # Same using a block (5..10).inject(1) {|product, n| product * n } #=> 151200 # find the longest word longest = %w{ cat sheep bear }.inject do |memo,word|

```memo.length > word.length ? memo : word
```

end longest #=> “sheep”

Show source