A Expressão 'if let'
Parte da seção Logic & Flow do Journey de Rust da Coddy — lição 4 de 66.
Às vezes, você só precisa verificar um padrão específico e não se importa com todas as outras possibilidades. Escrever uma expressão match completa com apenas um braço significativo e um _ que captura tudo pode parecer verboso. Rust fornece o if let como uma alternativa mais concisa para essas situações.
A expressão if let permite combinar a correspondência de padrões com a lógica condicional em uma única instrução legível. Aqui está a sintaxe básica:
if let pattern = value {
// código para executar se o padrão corresponder
}Por exemplo, em vez de escrever um match com apenas um braço útil:
let number = 5;
match number {
5 => println!("Found five!"),
_ => (), // não faz nada para outros valores
}Você pode usar if let para torná-lo mais limpo:
let number = 5;
if let 5 = number {
println!("Found five!");
}A expressão if let só executa o bloco de código quando o padrão coincide. Se não houver correspondência, nada acontece - não há necessidade de um caso "else" explícito, a menos que você queira um.
Desafio
FácilVocê receberá um número como entrada. Leia a entrada, converta-a para um número inteiro e use uma expressão if let para verificar se o número é exatamente 42. Se corresponder, imprima "The answer!". Se não corresponder, não imprima nada.
Requisitos:
- Use uma expressão
if letpara verificar se o número é igual a42 - Se o número for
42, imprima"The answer!" - Se o número for qualquer outra coisa, não imprima nada
Entrada: Um único número inteiro
Saída: Imprima "The answer!" se o número for 42, caso contrário, não imprima nada
Folha de consulta
A expressão if let fornece uma maneira concisa de corresponder a um único padrão sem escrever uma instrução match completa.
Sintaxe básica:
if let pattern = value {
// código para executar se o padrão corresponder
}Exemplo comparando match e if let:
// Usando match
let number = 5;
match number {
5 => println!("Found five!"),
_ => (), // não faz nada para outros valores
}
// Usando if let (mais conciso)
let number = 5;
if let 5 = number {
println!("Found five!");
}A expressão if let só é executada quando o padrão corresponde. Se não corresponder, nada acontece, a menos que você adicione uma cláusula else explícita.
Experimente você mesmo
use std::io;
fn main() {
// Ler a entrada
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Failed to read line");
let number: i32 = input.trim().parse().expect("Please enter a valid number");
// TODO: Escreva seu código abaixo
// Use if let para verificar se o número é igual a 42
}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