module Enumerable(T)

Overview

The Enumerable mixin provides collection classes with several traversal, searching, filtering and querying methods.

Including types must provide an each method, which yields successive members of the collection.

For example:

class Three
  include Enumerable(Int32)

  def each(&)
    yield 1
    yield 2
    yield 3
  end
end

three = Three.new
three.to_a                # => [1, 2, 3]
three.select &.odd?       # => [1, 3]
three.all? { |x| x < 10 } # => true

Note that most search and filter methods traverse an Enumerable eagerly, producing an Array as the result. For a lazy alternative refer to the Iterator and Iterable modules.

Defined in:

enumerable.cr

Instance Method Summary

Instance Method Detail

def reduce?(memo, &) #

Similar to #reduce?, however instead of returning nil when the input is empty, return the initial value of the accumulator.

([] of Int32).reduce?(10) { |acc, i| acc + i } # => 10

[View source]
def reduce?(&) #

Similar to reduce, but instead of raising when the input is empty, return nil

([] of Int32).reduce? { |acc, i| acc + i } # => nil

[View source]