Go to English Blog

Índice da iteração no Ruby

Leia em menos de um minuto

Se você precisar do índice da iteração de um array ao utilizar um método que retorna um outro array (collect, map, select, dentre outros), saiba que existe uma maneira muito mais elegante que manter contadores; utilize o método to_enum.

require "enumerator"
fruits = %w(apple orange lemon)
list = fruits.to_enum(:each_with_index).collect {|fruit, i| "#{i + 1}. #{fruit}" }
puts list.inspect #=> ["1. apple", "2. orange", "3. lemon"]

Se você estiver usando Ruby on Rails, ele já carrega o Enumerator, facilitando ainda mais a sua vida.