Menu
CoddyTech

A Expressão 'match'

Parte da seção Lógica & Fluxo do Journey de Rust da Coddy. Lição 1 de 66.

A expressão match é uma poderosa ferramenta de correspondência de padrões do Rust que permite comparar um valor com diferentes padrões e executar código com base no padrão correspondente. Pense nela como uma versão mais avançada das instruções if, capaz de lidar elegantemente com várias condições.

Aqui está a sintaxe básica de uma expressão match:

match value {
    pattern1 => code_to_run,
    pattern2 => code_to_run,
    _ => default_code,
}

Cada linha dentro de match é chamada de “braço”. => separa o padrão do código executado quando esse padrão corresponde. O sublinhado _ é um padrão curinga especial que corresponde a qualquer coisa — é como uma opção “genérica” para qualquer valor que não corresponda aos outros padrões.

Aqui está um exemplo simples que verifica um número:

let number = 2;

match number {
    1 => println!("One"),
    2 => println!("Two"),
    _ => println!("Other"),
}

Em Rust, as expressões match precisam ser exaustivas, ou seja, precisam lidar com todos os valores possíveis. É por isso que o curinga _ é tão importante: ele garante que você tenha coberto todos os casos que não foram correspondidos explicitamente.

match é uma expressão, então também pode produzir um valor. Quando é a última expressão de uma função, o valor do braço correspondente é o que a função retorna:

fn day_name(day: i32) -> String {
    match day {
        1 => String::from("Monday"),
        2 => String::from("Tuesday"),
        _ => String::from("Another day"),
    }
}

Como essa função retorna uma String, cada braço transforma seu texto (um &str) em uma String com String::from ou .to_string().

challenge icon

Desafio

Fácil

Escreva uma função describe_number que recebe num e retorna uma descrição em string baseada no valor do número.

Use uma expressão match para retornar diferentes descrições para diferentes números.

Condições:

  • Se num for 0, retorne "zero"
  • Se num for 1, retorne "one"
  • Se num for 2, retorne "two"
  • Se num for 3, retorne "three"
  • Para qualquer outro número, retorne "many"

Parâmetros:

  • num (i32): O número a ser descrito

Retorno: Uma descrição em string do número (String)

Experimente você mesmo

fn describe_number(num: i32) -> String {
    // Escreva o código aqui
}
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 Lógica & Fluxo

Pratique por conta própria: Compilador de Rust online