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().
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)
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 Lógica & Fluxo
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 FinalPratique por conta própria: Compilador de Rust online