Ruby · Intermediário · Inglês · Técnico
Enumerable
Módulo que dá dezenas de métodos de coleção, como map, select e reduce, a qualquer classe que defina each. Array, Hash e Range já o incluem.
Onde usar
Ao criar uma coleção própria, basta incluir Enumerable e implementar each para ganhar sort_by, min, group_by e mais. É um dos melhores exemplos do uso de mixins em Ruby.
Em código
class Fila
include Enumerable
def initialize(*itens); @itens = itens; end
def each(&bloco) = @itens.each(&bloco)
end
f = Fila.new(3, 1, 2)
p f.sort, f.map { |n| n * 2 }Exemplos
Include Enumerable and define each, and you get map for free.
Inclua Enumerable e defina each, e você ganha o map de graça.
Hash and Range both include Enumerable.
Hash e Range incluem Enumerable.
Cuidado
Não confunda com Enumerator: Enumerable é o módulo com os métodos, e Enumerator é o objeto que percorre uma sequência sob demanda.