Correspondendo Valores
A palavra-chave match
permite que vocĂȘ corresponda um valor a um ou mais padrĂ”es (patterns). As comparaçÔes sĂŁo feitas de cima para baixo e a primeira correspondĂȘncia encontrada Ă© selecionada.
Os padrÔes podem ser valores simples, similarmente a switch
em C e C++:
#[rustfmt::skip] fn main() { let input = 'x'; match input { 'q' => println!("Encerrando"), 'a' | 's' | 'w' | 'd' => println!("Movendo por aĂ"), '0'..='9' => println!("Entrada de nĂșmero"), key if key.is_lowercase() => println!("MinĂșsculas: {key}"), _ => println!("Alguma outra coisa"), } }
O padrĂŁo _
é um padrão curinga que corresponde a qualquer valor. As expressÔes devem ser irrefutåveis, o que significa que cobre todas as possibilidades, então _
Ă© frequentemente usado como o Ășltimo caso de captura.
CorrespondĂȘncia pode ser usada como uma expressĂŁo. Assim como if
, cada braço de correspondĂȘncia deve ter o mesmo tipo. O tipo Ă© a Ășltima expressĂŁo do bloco, se houver. No exemplo acima, o tipo Ă© ()
.
Uma variĂĄvel no padrĂŁo (key
neste exemplo) criarĂĄ uma ligação que pode ser usada dentro do braço de correspondĂȘncia.
Uma guarda de correspondĂȘncia faz com que o braço corresponda somente se a condição for verdadeira.
Pontos Chave:
-
VocĂȘ pode apontar como alguns caracteres especĂficos podem ser usados em um padrĂŁo
|
como umor
..
pode expandir o quanto for necessĂĄrio1..=5
representa um intervalo inclusivo_
Ă© um curinga
-
Guardas de correspondĂȘncia, como um recurso de sintaxe separado, sĂŁo importantes e necessĂĄrias quando se quer expressar ideias mais complexas do que somente o padrĂŁo permitiria.
-
Eles nĂŁo sĂŁo iguais Ă expressĂŁo
if
separada dentro do bloco de correspondĂȘncia. Uma expressĂŁoif
dentro do bloco de ramificação (depois de=>
) acontece depois que a correspondĂȘncia Ă© selecionada. A falha na condiçãoif
dentro desse bloco nĂŁo resultarĂĄ em outras verificaçÔes de correspondĂȘncia da expressĂŁomatch
original serem consideradas. -
A condição definida na guarda se aplica a todas as expressÔes em um padrão com um
|
.