O Método Enumerated
Parte da seção Fundamentos do Journey de Swift da Coddy — lição 70 de 86.
Às vezes, ao iterar sobre um array, você precisa saber não apenas o elemento, mas também sua posição. Embora você possa rastrear manualmente o índice com uma variável de contador, o Swift oferece uma solução mais limpa: o método enumerated().
Quando você chama enumerated() em um array, ele retorna uma sequência de tuplas, onde cada tupla contém o índice e o elemento:
let colors = ["Red", "Green", "Blue"]
for (index, color) in colors.enumerated() {
print("\(index): \(color)")
}
// 0: Red
// 1: Green
// 2: BlueObserve como decompomos cada tupla diretamente no loop usando (index, color). Isso nos dá acesso a ambos os valores sem nenhum código extra.
Isso é particularmente útil quando você precisa exibir listas numeradas ou realizar operações que dependem da posição de um elemento:
let tasks = ["Wake up", "Exercise", "Eat breakfast"]
for (index, task) in tasks.enumerated() {
print("Task \(index + 1): \(task)")
}
// Tarefa 1: Wake up
// Tarefa 2: Exercise
// Tarefa 3: Eat breakfastO método enumerated() mantém seu código limpo e legível em comparação com o gerenciamento manual de uma variável de contador separada.
Desafio
FácilEscreva uma função formatWithPositions que recebe items e retorna uma string formatada mostrando cada item com seu número de posição.
Use o método enumerated() para iterar pelo array e construir uma string onde cada item é prefixado com seu número de posição baseado em 1.
Lógica:
- Itere pelo array usando
enumerated() - Para cada elemento, crie uma string no formato
"position. item"(usando numeração baseada em 1) - Junte todas as strings formatadas com um caractere de nova linha (
\n)
Parâmetros:
items([String]): Um array de strings para formatar
Retorno: Uma única string com cada item em sua própria linha, prefixado com seu número de posição (String). Formato: "1. item1\n2. item2\n3. item3"
Exemplo: Se items for ["Apple", "Banana", "Cherry"], a função deve retornar:
"1. Apple\n2. Banana\n3. Cherry"Nota: Se o array estiver vazio, retorne uma string vazia "".
Folha de consulta
O método enumerated() retorna uma sequência de tuplas contendo tanto o índice quanto o elemento de um array:
let colors = ["Red", "Green", "Blue"]
for (index, color) in colors.enumerated() {
print("\(index): \(color)")
}
// 0: Red
// 1: Green
// 2: BlueCada tupla é decomposta diretamente no loop usando a sintaxe (index, element), fornecendo acesso tanto à posição quanto ao valor.
Isso é útil para criar listas numeradas adicionando 1 ao índice baseado em zero:
let tasks = ["Wake up", "Exercise", "Eat breakfast"]
for (index, task) in tasks.enumerated() {
print("Task \(index + 1): \(task)")
}
// Task 1: Wake up
// Task 2: Exercise
// Task 3: Eat breakfastExperimente você mesmo
func formatWithPositions(items: [String]) -> String {
// Escreva o código aqui
}
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 1
Operadores AritméticosOperador de MóduloAtribuição CompostaRecapitulação - Matemática SimplesOperadores de Comparação7IO Básico
Função PrintInterpolação de StringsEntrada ReadLineConversão de TiposRecapitulação - Até 120Recapitulação - Verdadeiro ou Falso10Funções
Declarar uma FunçãoParâmetros e ArgumentosValores de RetornoRótulos de ArgumentosRecapitulação - Função SigmaRecapitulação - Função de ValidaçãoValores Padrão13Iterando sobre Sequências
Iterando sobre ElementosO Método EnumeratedIterando sobre Strings P1Iterando sobre Strings P22Variáveis
Let vs VarAnotações de TipoNúmerosStringBooleanosConvenções de NomenclaturaRecapitulação - Inicializar Variáveis5Operadores Parte 2
Operadores Lógicos Parte 1Operadores Lógicos Parte 2Recapitulação - Lógica SimplesOperadores Lógicos Parte 3Operador Ternário8Calculadora de Divisão de Conta
Mensagem de Boas-vindasObtendo Entrada11FizzBuzz com um Diferencial
Visão Geral do JogoA Função FizzBuzz3Opcionais
O que são OpcionaisDesembrulhando com If LetGuard LetOperador de Coalescência NulaRecapitulação - Desembrulho Seguro6Tomada de Decisão
Estrutura IfIf - ElseRecapitulação - Calculadora SimplesEstrutura SwitchSwitch com Intervalos9Loops
Loop For-InLoop WhileLoop Repeat-WhileBreakContinueRecapitulação - FatorialIntervalos em LoopsLoop AninhadoRecapitulação - Entrada Dinâmica12Fundamentos de Arrays
Declarando um ArrayAcessando ElementosModificando ArraysMétodos de ArrayRecapitulação - Lista de ProdutosRecapitulação - Array InvertidoTuplas15Rastreador de Despesas Diárias
Visão Geral do ProjetoSair do Programa