Loops como Expressões
Parte da seção Logic & Flow do Journey de Rust da Coddy — lição 5 de 66.
Na maioria das linguagens de programação, os loops são instruções que executam código repetidamente. Mas o Rust tem um recurso único: os loops também podem ser expressões que retornam um valor. Isso significa que você pode atribuir o resultado de um loop a uma variável.
Para retornar um valor de um loop, você usa break seguido pelo valor que você deseja retornar:
let result = loop {
// alguma verificação de condição
if condition_met {
break 42; // sai do loop e retorna 42
}
};Aqui está um exemplo prático que encontra o primeiro número par começando a partir de 10:
let mut counter = 10;
let first_even = loop {
if counter % 2 == 0 {
break counter; // retorna o número par
}
counter += 1;
};
println!("First even number: {}", first_even);O loop continua até encontrar um número par, então usa break counter para sair do loop e retornar esse número. O valor retornado é atribuído a first_even.
Desafio
FácilVocê receberá um número inicial como entrada. Leia a entrada, converta-a para um número inteiro e use um loop como uma expressão para encontrar o primeiro número divisível por 7 a partir desse número.
Requisitos:
- Use uma expressão
loopque retorne um valor - Comece a verificação a partir do número de entrada
- Encontre o primeiro número que seja divisível por 7 (o resto é 0 quando dividido por 7)
- Use
breakpara retornar o número encontrado a partir do loop - Imprima o resultado
Entrada: Um único número inteiro representando o número inicial
Saída: Imprima o primeiro número divisível por 7 a partir do número de entrada
Folha de consulta
Em Rust, loops podem ser expressões que retornam um valor. Use break seguido por um valor para sair do loop e retornar esse valor:
let result = loop {
if condition_met {
break 42; // sai do loop e retorna 42
}
};Exemplo encontrando o primeiro número par:
let mut counter = 10;
let first_even = loop {
if counter % 2 == 0 {
break counter; // retorna o número par
}
counter += 1;
};
println!("First even number: {}", first_even);Experimente você mesmo
use std::io;
fn main() {
// Ler entrada
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Failed to read line");
let start_number: i32 = input.trim().parse().expect("Invalid input");
// TODO: Escreva seu código abaixo
// Use uma expressão de loop para encontrar o primeiro número divisível por 7
// Imprimir o resultado
// println!("{}", result);
}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