Menu
Coddy logo textTech

Each com Index

Parte da seção Fundamentos do Journey de Ruby da Coddy — lição 66 de 88.

Às vezes, você precisa saber não apenas o elemento com o qual está trabalhando, mas também sua posição no array. O método each_with_index do Ruby fornece tanto o elemento quanto seu índice em uma única iteração.

Veja como funciona:

fruits = ["apple", "banana", "cherry"]

fruits.each_with_index do |fruit, index|
  puts "#{index}: #{fruit}"
end

Isso resulta em:

0: apple
1: banana
2: cherry

Observe que o bloco agora recebe duas variáveis entre os pipes: o elemento vem primeiro, seguido pelo índice. O índice começa em 0, assim como ao acessar elementos de um array diretamente.

Isso é particularmente útil quando você precisa exibir listas numeradas ou rastrear posições:

tasks = ["Buy groceries", "Clean room", "Call mom"]

tasks.each_with_index do |task, i|
  puts "Task #{i + 1}: #{task}"
end

Ao adicionar 1 ao índice, criamos uma lista numerada amigável para humanos começando em 1 em vez de 0. O método each_with_index elimina a necessidade de rastrear manualmente uma variável de contador, tornando seu código mais limpo e menos propenso a erros.

challenge icon

Desafio

Fácil

Leia uma única linha de entrada contendo palavras separadas por vírgulas (ex: apple,banana,cherry,date).

Divida a entrada em um array de strings e, em seguida, use each_with_index para imprimir cada item como uma lista numerada começando em 1 (não 0).

Cada linha deve seguir este formato: Item 1: apple

Por exemplo, se a entrada for apple,banana,cherry,date, a saída deve ser:

Item 1: apple
Item 2: banana
Item 3: cherry
Item 4: date

Se a entrada for red,green,blue, a saída deve ser:

Item 1: red
Item 2: green
Item 3: blue

Se a entrada for monday,tuesday,wednesday,thursday,friday, a saída deve ser:

Item 1: monday
Item 2: tuesday
Item 3: wednesday
Item 4: thursday
Item 5: friday

Se a entrada for solo, a saída deve ser:

Item 1: solo

Folha de consulta

O método each_with_index permite que você itere sobre um array enquanto acessa tanto o elemento quanto seu índice:

fruits = ["apple", "banana", "cherry"]

fruits.each_with_index do |fruit, index|
  puts "#{index}: #{fruit}"
end

Saída:

0: apple
1: banana
2: cherry

O bloco recebe duas variáveis: primeiro o elemento, depois o índice. O índice começa em 0.

Para criar listas numeradas amigáveis para humanos começando em 1, adicione 1 ao índice:

tasks = ["Buy groceries", "Clean room", "Call mom"]

tasks.each_with_index do |task, i|
  puts "Task #{i + 1}: #{task}"
end

Experimente você mesmo

# Lê a entrada separada por vírgulas
input = gets.chomp

# Divide a entrada em um array
items = input.split(",")

# TODO: Use each_with_index para imprimir cada item como uma lista numerada
# Lembre-se: o índice começa em 0, mas você precisa exibir começando de 1
# Formato: "Item 1: apple"
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos