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:
ruby
array = [1, 3, 5, 7]
Ao rodar o método
cycle
, veja o que acontece:ruby
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:ruby
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.