Menu
Coddy logo textTech

Instrução Match

Parte da seção Fundamentals do Journey de Rust da Coddy — lição 26 de 75.

A expressão match permite comparar um valor com uma série de padrões e executar código baseado em qual padrão coincide.

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

match variable {
	pattern1 => expression1,
	pattern2 => expression2,
	// ... mais padrões
	_ => default_expression,
}

A palavra-chave match é seguida pelo valor que você deseja testar.

Cada braço do match consiste em um padrão seguido por => e o código a ser executado.

O underscore _ é o caso padrão que corresponde a qualquer coisa não correspondida por outros padrões.

Aqui está um exemplo:

let day = 3;
let day_name = match day {
	1 => "Monday",
	2 => "Tuesday",
	3 => "Wednesday",
	// ... mais padrões,
	_ => "Invalid day",
};

Para múltiplas linhas de código em um braço, use um bloco:

let day = 3;
let day_name = match day {
	1 => {
		println!("First day of the week!");
		"Monday"
	},
	2 => "Tuesday",
	// ... outros casos
	_ => "Invalid day",
};

Você pode corresponder a múltiplos padrões usando |:

let day = 3;
let day_type = match day {
	1 | 2 | 3 | 4 | 5 => "Weekday",
	6 | 7 => "Weekend",
	_ => "Invalid day",
};

Expressões match em Rust devem ser exaustivas, o que significa que elas devem cobrir todos os valores possíveis. O compilador verificará isso para você.

challenge icon

Desafio

Iniciante

Crie um programa que receba o número de um mês (1 para Janeiro, 2 para Fevereiro, etc.) e imprima a estação a que ele pertence. Use uma instrução match para a lógica.

As estações e seus meses correspondentes são:

  • Winter: Dezembro (12), Janeiro (1), Fevereiro (2)
  • Spring: Março (3), Abril (4), Maio (5)
  • Summer: Junho (6), Julho (7), Agosto (8)
  • Autumn: Setembro (9), Outubro (10), Novembro (11)

Folha de consulta

A expressão match compara um valor com padrões e executa o código com base em qual padrão coincide:

match variable {
    pattern1 => expression1,
    pattern2 => expression2,
    _ => default_expression,
}

Exemplo básico:

let day = 3;
let day_name = match day {
    1 => "Monday",
    2 => "Tuesday",
    3 => "Wednesday",
    _ => "Invalid day",
};

Para múltiplas linhas de código em um braço (arm), use um bloco:

let day = 3;
let day_name = match day {
    1 => {
        println!("First day of the week!");
        "Monday"
    },
    2 => "Tuesday",
    _ => "Invalid day",
};

Corresponda a múltiplos padrões usando |:

let day = 3;
let day_type = match day {
    1 | 2 | 3 | 4 | 5 => "Weekday",
    6 | 7 => "Weekend",
    _ => "Invalid day",
};

As expressões match devem ser exaustivas - elas devem cobrir todos os valores possíveis. O sublinhado _ é o caso padrão que corresponde a qualquer coisa não correspondida por outros padrões.

Experimente você mesmo

use std::io;

fn main() {
    let mut input = String::new();
    io::stdin().read_line(&mut input).unwrap();
    let month: i32 = input.trim().parse().unwrap();
    // Escreva seu código abaixo
    let season = 

    // Não altere a linha abaixo
    println!("status = {}", season);
}
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 Fundamentals