Ruby /

Enumerable Module

Enumerable - это модуль в стандартной библиотеке Ruby. Классы, которые его включают, должны определить метод экземпляра с именем each, который возвращает элементы коллекции последовательно. После определения итератора и добавления Enumerable класс теперь поддерживает всевозможные действия, связанные с коллекциями. Также следует помнить, что, хотя Enumerable и добавляет общую функциональность каждому из классов коллекций, которые его включают, каждый из них фактически переопределяет некоторые из своих методов.

Реализуйте метод #each, который должен возвращать последовательные элементы коллекции. Этот метод будет вызываться практически любым методом перечислимого объекта.

class MyArray
include Enumerable

def each
# yield elements of the collection
end
end

Можно узнать, какие методы предоставляет Enumerable, вызвав метод класса instance_methods и передав аргумент false, чтобы получить только методы, определенные в самом модуле.

Enumerable.instance_methods(false).inspect

 => "[:each_cons, :each_with_object, :zip, :take, :take_while, :drop,
:drop_while, :cycle, :chunk, :slice_before, :slice_after, :slice_when,
:chunk_while, :sum, :uniq, :compact, :lazy, :chain, :to_set, :include?,
:to_h, :max, :min, :find, :to_a, :entries, :sort, :sort_by, :grep,
:grep_v, :count, :detect, :find_index, :find_all, :select, :filter,
:filter_map, :reject, :collect, :map, :flat_map, :collect_concat,
:inject, :reduce, :partition, :group_by, :tally, :first, :all?, :any?,
:one?, :none?, :minmax, :min_by, :max_by, :minmax_by, :member?,
:each_with_index, :reverse_each, :each_entry, :each_slice]" 

Эти методы разделены на 5 групп -