A Expressão 'match'
Parte da seção Logic & Flow do Journey de Rust da Coddy — lição 1 de 66.
A expressão match é a poderosa ferramenta de correspondência de padrões (pattern matching) do Rust que permite comparar um valor com diferentes padrões e executar código com base em qual padrão corresponde. Pense nela como uma versão mais avançada das instruções if que pode lidar com múltiplas condições de forma elegante.
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 do match é chamada de "braço". O => separa o padrão do código que é executado quando esse padrão coincide. O sublinhado _ é um padrão curinga especial que coincide com qualquer coisa — é como um "catch-all" para qualquer valor que não coincida com os 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, expressões match devem ser exaustivas, o que significa que elas devem lidar com todos os valores possíveis. É por isso que o caractere curinga _ é tão importante - ele garante que você cobriu todos os casos que não foram explicitamente correspondidos.
Desafio
FácilEscreva 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
numfor0, retorne"zero" - Se
numfor1, retorne"one" - Se
numfor2, retorne"two" - Se
numfor3, 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)
Folha de consulta
A expressão match compara um valor com diferentes padrões e executa o código com base em qual padrão coincide:
match value {
pattern1 => code_to_run,
pattern2 => code_to_run,
_ => default_code,
}Cada linha dentro do match é chamada de "braço" (arm). O => separa o padrão do código que é executado quando esse padrão coincide.
Exemplo:
let number = 2;
match number {
1 => println!("One"),
2 => println!("Two"),
_ => println!("Other"),
}O sublinhado _ é um padrão curinga que coincide com qualquer coisa não coberta por outros padrões. As expressões match devem ser exaustivas - elas devem lidar com todos os valores possíveis.
Experimente você mesmo
fn describe_number(num: i32) -> String {
// Escreva o código aqui
}
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