Definindo uma Closure Simples
Parte da seção Logic & Flow do Journey de Rust da Coddy — lição 60 de 66.
Agora que você entende o que são closures, vamos aprender como defini-las e usá-las em seu código. A maneira mais simples de criar uma closure é atribuí-la a uma variável, o que permite que você a chame mais tarde.
Veja como você define uma closure básica que não recebe parâmetros:
let my_closure = || {
println!("Hello from the closure!");
};Observe as barras verticais vazias || - isso indica que a closure não recebe argumentos. As chaves contêm o código que é executado quando você chama a closure.
Para chamar sua closure, você a utiliza exatamente como uma função, adicionando parênteses após o nome da variável:
let my_closure = || {
println!("Hello from the closure!");
};
my_closure(); // Isso chama a closure e imprime a mensagemDesafio
FácilVocê receberá uma única entrada contendo uma mensagem. Crie uma closure que não receba parâmetros e imprima esta mensagem. Armazene a closure em uma variável e, em seguida, chame-a para exibir a mensagem.
Requisitos:
- Leia a mensagem de entrada e remova os espaços em branco (trim)
- Crie uma closure usando a sintaxe
||que imprima a mensagem - Armazene a closure em uma variável
- Chame a closure para executá-la
Entrada:
- Uma única linha contendo uma mensagem (ex:
Welcome to Rust!)
Saída:
- A mensagem impressa pela closure
Folha de consulta
Uma closure é definida usando barras verticais || e pode ser armazenada em uma variável:
let my_closure = || {
println!("Hello from the closure!");
};Para chamar uma closure, use parênteses após o nome da variável:
my_closure(); // Executa a closureExperimente você mesmo
use std::io;
fn main() {
// Ler a entrada
let mut message = String::new();
io::stdin().read_line(&mut message).expect("Failed to read line");
let message = message.trim();
// TODO: Criar uma closure que imprime a mensagem e armazená-la em uma variável
// TODO: Chamar a closure para imprimir a mensagem
}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 Book7Tratando Erros com 'Result'
O que é um 'Result'?Usando 'match' com 'Result'is_ok() e is_err()Atalhos: unwrap e expectO Operador de Interrogação '?'Parsing de Strings para NúmerosRecapitulação - Função de Divisão Segura10Closures & Funções Anônimas
O que é uma Closure?Definindo uma Closure SimplesClosures com ParâmetrosCapturando o AmbienteRecapitulação - Closure de Soma Simples2Introduçã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