Transformando um Array em um Enumerator no Ruby

Transformando um Array em um Enumerator no Ruby

Existem alguns casos em que você precisa modificar um array (aumentá-lo por exemplo) repetindo os valores presentes no array original.

Uma forma bem interessante de fazer isso é convertendo tal array para um objeto Enumerator. Para isso, existe o método Enumerator#cycle. Imagine o seguinte array:

array = [1, 3, 5, 7]

Ao rodar o método cycle, veja o que acontece:

array.cycle
#=> #<Enumerator: [1, 3, 5, 7]:cycle>

Podemos agora usar o método Enumerator#take e modificar o array original como quisermos. Por exemplo, vamos dobrar o seu tamanho:

array.cycle.take(8)
#=> [1, 3, 5, 7, 1, 3, 5, 7]

Foi criado um array do tamanho especificado no parametro do método take.

Isso é útil – por exemplo – em casos similares à esse código da gem boleto_bancario. Em algoritmos de IA também é bastante comum precisar desse tipo de modificação em arrays.

  • Por isso que eu amo Ruby =) Muito prático!

    Só uma observação: o array original não é modificado. O objeto continua com os mesmos valores.

Comments are closed.