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}"
endIsso resulta em:
0: apple
1: banana
2: cherryObserve 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}"
endAo 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.
Desafio
FácilLeia 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: dateSe a entrada for red,green,blue, a saída deve ser:
Item 1: red
Item 2: green
Item 3: blueSe 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: fridaySe a entrada for solo, a saída deve ser:
Item 1: soloFolha 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}"
endSaída:
0: apple
1: banana
2: cherryO 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}"
endExperimente 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"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
4Operadores Parte 2
Operadores Lógicos Parte 1Operadores Lógicos Parte 2Recapitulação - Lógica SimplesOperadores Lógicos Parte 3Operadores Lógicos Parte 47Calculadora de Divisão de Conta
Mensagem de Boas-vindasObtendo Entrada do Usuário10FizzBuzz com um Toque Especial
Visão Geral do JogoO Método FizzBuzz2Variáveis e Tipos de Dados
Números e VariáveisTipo de Dado StringTipo de Dado BooleanTipo de Dado SymbolVerificando Tipos de DadosConvenções de NomenclaturaRecapitulação - Criação de Variáveis5Tomada de Decisão
Instrução IfIf - ElseRecapitulação - Calculadora SimplesIf - Else AninhadoInstrução Unless8Laços de Repetição
Loop For com IntervalosLoop WhileBreakNextRecapitulação - FatorialLoop TimesLoop UntilLoops AninhadosRecapitulação - Entrada Dinâmica3Operadores Parte 1
Operadores AritméticosOperador de MóduloAtalhos AritméticosRecapitulação - Matemática SimplesOperadores de Comparação6IO Básico
Saída com putsSaída com print e pSaída com VariáveisEntrada com getsMétodo chompConversão de TiposRecapitulação - Calculadora de IdadeRecapitulação - Verdadeiro ou Falso9Métodos
Definindo um MétodoParâmetros de MétodoValores de RetornoRecapitulação - Método SigmaRecapitulação - Método de ValidaçãoValores de Parâmetro Padrão15Rastreador de Despesas Diárias
Visão Geral do ProjetoSair do Programa