Iterando sobre um Vetor
Parte da seção Logic & Flow do Journey de Rust da Coddy — lição 11 de 66.
Agora que você sabe como criar vetores e acessar elementos individuais, vamos aprender como processar cada elemento em um vetor sistematicamente. O loop for é perfeito para esta tarefa, permitindo que você visite cada elemento em sequência.
Aqui está a sintaxe básica para iterar sobre um vetor:
let names = vec!["Alice", "Bob", "Charlie"];
for name in &names {
println!("Hello, {}!", name);
}Observe o & antes de names - isso cria uma referência para o vetor, permitindo que você leia cada elemento sem assumir a posse (ownership) do próprio vetor. Cada iteração fornece acesso a um elemento por vez através da variável de loop name.
O laço for lida automaticamente com a verificação de limites para você. Ao contrário da indexação manual, você nunca tentará acidentalmente acessar um elemento que não existe. O laço percorrerá exatamente tantos elementos quantos o vetor contiver, tornando-o seguro e conveniente.
Você pode usar este padrão com qualquer tipo de vetor:
let scores = vec![85, 92, 78, 90];
for score in &scores {
println!("Score: {}", score);
}Esta abordagem é a maneira mais comum e idiomática de processar todos os elementos em um vetor quando você precisa ler seus valores.
Desafio
FácilEscreva uma função sum_all_elements que recebe um vetor numbers e retorna a soma de todos os seus elementos.
Use um loop for para iterar sobre o vetor e acumular a soma de todos os elementos.
Parâmetros:
numbers(Vec<i32>): O vetor de inteiros para somar
Retorno: A soma de todos os elementos no vetor (i32)
Folha de consulta
Para iterar sobre um vetor, use um loop for com uma referência para o vetor:
let names = vec!["Alice", "Bob", "Charlie"];
for name in &names {
println!("Hello, {}!", name);
}O & antes do nome do vetor cria uma referência, permitindo que você leia cada elemento sem assumir a posse (ownership). O loop lida automaticamente com a verificação de limites e visita exatamente a quantidade de elementos que o vetor contém.
Este padrão funciona com qualquer tipo de vetor:
let scores = vec![85, 92, 78, 90];
for score in &scores {
println!("Score: {}", score);
}Experimente você mesmo
fn sum_all_elements(numbers: Vec<i32>) -> i32 {
// 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 Logic & Flow
1Fluxo de Controle Avançado
A Expressão 'match'Correspondência de Múltiplos ValoresCorrespondência de IntervalosA Expressão 'if let'Loops como ExpressõesRecapitulação - Parser de Comandos Simples4Agrupando Dados com Structs
O que é uma Struct?Visão Geral de StructsAcessando Campos de uma StructStructs MutáveisStructs como Parâmetros de FunçãoTuple StructsRecapitulação - Criando uma Struct Book2Introdução a Vetores
O que é um Vetor?Criando um VetorAdicionando Elementos com pushAcessando Elementos do VetorIterando sobre um VetorIteração MutávelRemovendo ElementosRecapitulação - Rastreador de Pontuação Básico5Pares Chave-Valor com Hash Maps
O que é um Hash Map?Criando um Hash MapInserindo Pares Chave-ValorAcessando ValoresIterando sobre um Hash MapAtualizando um ValorRemovendo um ParRecapitulação - Contador de Palavras8Projeto: Inventário Simples de Itens
Configuração do ProjetoAdicionando um ItemVerificando o EstoqueVendendo um ItemJuntando tudo3Lista de Tarefas via Linha de Comando
Configuração do ProjetoAdicionando uma TarefaVisualizando Todas as TarefasRemovendo uma TarefaCódigo Final