A sintaxe if let
permite combinar if
e let
de uma forma menos prolixa para lidar com valores que correspondem a um padrão, enquanto ignora o resto. Considere o programa na Listagem 6-6 que corresponde a um valor Option<u8>
, mas só deseja executar o código se o valor for 3.
Queremos fazer algo com a correspondência Some(3)
, mas nada fazer com nenhum outro valor Some<u8>
ou valor None
. Para satisfazer a expressão match
, temos que adicionar, _ => ()
após o processamento, apenas uma variante, que é muito código clichê para adicionar.
Em vez disso, poderíamos escrever isso de forma mais curta usando if let
. O código a seguir se comporta da mesma forma que o match
da Listagem 6-6:
A sintaxe if let
assume um padrão e uma expressão separados por um sinal de igual. Funciona da mesma forma que match
, onde a expressão é dada a match
e o padrão é seu primeiro braço.
Usar if let
significa menos digitação, menos indentação e menos código clichê. No entanto, você perde a verificação exaustiva que match
impõe. A escolha entre match
e if let
depende do que você está fazendo em sua situação particular e se ganhar concisão é uma compensação apropriada para perder uma verificação exaustiva.
Em outras palavras, você pode pensar em if let
como um açúcar de sintaxe para um match
que executa o código quando o valor corresponde a um padrão e, em seguida, ignora todos os outros valores.
Podemos incluir um else
com um if let
. O bloco de código que acompanha o else
é o mesmo que o bloco de código que acompanha o caso _
na expressão match
que é equivalente a if let
e else
. Lembre-se da definição do enum Coin
na Listagem 6-4, em que a variante Quarter
também continha um valor UsState
. Se quiséssemos contar todas as moedas que não são um quarto que vemos e, ao mesmo tempo, anunciar o estado dos quartos, poderíamos fazer isso com uma expressão match
como esta:
Ou podemos usar uma expressão if let
e else
assim:
Se você tiver uma situação em que seu programa tenha uma lógica muito prolixa para ser expressa usando um match
, lembre-se de que if let
também está em sua caixa de ferramentas Rust.
Resumo
Agora cobrimos como usar enums para criar tipos personalizados que podem ser um de um conjunto de valores enumerados. Mostramos como o tipo Option<T>
da biblioteca padrão ajuda você a usar o sistema de tipos para evitar erros. Quando os valores enum têm dados dentro deles, você pode usar match
ou if let
para extrair e usar esses valores, dependendo de quantos casos você precisa tratar.
Seus programas Rust agora podem expressar conceitos em seu domínio usando structs e enums. A criação de tipos personalizados para usar em sua API garante a segurança do tipo: o compilador fará com que suas funções obtenham apenas valores do tipo que cada função espera.
Para fornecer aos seus usuários uma API bem organizada, fácil de usar e que apenas exponha exatamente o que os usuários precisarão, vamos agora nos módulos do Rust.
Traduzido por Acervo Lima. O original pode ser acessado aqui.
0 comentários:
Postar um comentário