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ê.
Desafio
InicianteCrie 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);
}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
4Operadores Parte 1
Operadores AritméticosOperador de MóduloAtalhos AritméticosOperadores de ComparaçãoComparação de Strings7Entrada e Saída Básica
Exibindo no ConsoleLendo a Entrada do UsuárioRevisão - Até 120Revisão - Verdadeiro ou Falso5Operadores Parte 2
Operadores Lógicos Parte 1Operadores Lógicos Parte 2Recapitulação - Lógica SimplesOperadores Lógicos Parte 33Variáveis Parte 2
Declaração de TipoConvenções de NomenclaturaInferência de TipoRecapitulação - Inicializar VariáveisConversão de Tipo9Laços
For sobre SériesLaço WhileBreakContinueLaços AninhadosRótulos de LoopLoop InfinitoRecapitulação - Entrada Dinâmica