Menu
Coddy logo textTech

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.

challenge icon

Desafio

Fácil

Você 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 let para verificar se o número é igual a 42
  • 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
    
}
quiz iconTeste seus conhecimentos

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