Correspondência de padrões F#
F# Pattern Matching permite que você corresponda a estrutura de dados com padrões e execute o código com base na correspondência. Neste artigo, exploraremos a correspondência de padrões do F# em detalhes e aprenderemos como usá-la com eficiência.
- F# Correspondência de padrões:
- O que é F# Pattern Matching?:
- Como usar a correspondência de padrões F#?:
- Correspondência de padrão da estação por mês:
- Correspondência no tipo de opção:
- Fibonacci recursivo usando correspondência de padrões:
- Funções de correspondência de padrões:
- Adicionando filtros ou guardas aos padrões:
- Correspondência de padrão F# com tuplas:
- Correspondência de padrões com listas:
- Correspondência de padrões com registros:
- Benefícios da correspondência de padrão F#:
O que é F# Pattern Matching?
A correspondência de padrão F# é uma construção de linguagem que permite corresponder padrões em estruturas de dados e executar operações com base na correspondência. É um recurso poderoso que torna o código mais conciso e expressivo. O F# tem um sistema sofisticado de correspondência de padrões que fornece uma ampla variedade de recursos de correspondência de padrões.
O recurso de correspondência de padrões do F# é uma das técnicas mais poderosas disponíveis para decompor e extrair informações de estruturas de dados complexas, incluindo listas , registros , uniões discriminadas, bem como seus relacionamentos funcionais, de maneira concisa e expressiva.
Como usar a correspondência de padrões F#?
No F#, a correspondência de padrões é obtida usando a expressão de correspondência. A expressão de correspondência pega um valor e o compara com um ou mais padrões. Se o valor corresponder a um dos padrões, a ação correspondente será executada. Se o valor não corresponder a nenhum dos padrões, uma exceção será lançada.
Portanto, é uma das maneiras mais convenientes e poderosas de testar dados em vários critérios diferentes, o que o torna mais eficiente e flexível. Além disso, também é capaz de realizar alguns cálculos baseados nas condições atendidas.
Sintaxe
A sintaxe para correspondência de padrões em F# é a seguinte:
match expr with | pat1 - result1 | pat2 -> result2 | pat3 when expr2 -> result3 | _ -> defaultResult
Onde,
- As condições são definidas pelo | símbolo.
- Um -> símbolo indica “retorne este valor se a condição for verdadeira…”
- _ fornece o padrão padrão, que corresponde a tudo como um curinga.
Correspondência de padrão de estação por mês
Aqui está um exemplo de como uma correspondência padrão da estação do tempo por mês pode ser alcançada:
Example:
E a saída será como:
Winter Spring Rainy Summer Autumn
Correspondência no tipo de opção
Abaixo está um exemplo de um tipo de opção usando correspondência de padrões:
Example:
Isto é o que imprime como resultado:
Value: 22 None Value: 24
Fibonacci recursivo usando correspondência de padrões
Este exemplo imprime a série Fibonacci usando o método recursivo de correspondência de padrões:
Example:
E imprime:
Fibonacci Series: 1, 1, 2, 3, 5, 8, 13, 21,
Funções de correspondência de padrões
Ao usar a palavra-chave function, você pode escrever funções que correspondem a padrões usando a seguinte sintaxe:
Example:
E a saída será:
Pineapple: 22 Watermelon: 19.5 Mango: 25 Orange: 12.22 Apple: 8.15
Adicionando filtros ou guardas aos padrões
Ao usar a palavra-chave when, você poderá adicionar filtros ou guardas aos padrões.
Example:
O resultado imprime o seguinte:
1 -1 0
Comparando números usando a palavra-chave when, que é usada como uma condição if:
Example:
E a saída será a seguinte:
25 is greater than 21 65 is less than 88 3 equals 3
Correspondência de padrão F# com tuplas
O exemplo a seguir mostra como tuplas podem ser usadas para combinar padrões:
Example:
Output of the above example will be Name: John Age: 25 City: New York Date of Birth: 18/march/2002 Name: Ben Age: 32 City: San Antonio Date of Birth: 12/august/1998
Correspondência de padrões com listas
A correspondência de padrões em F# também pode ser usada com listas .
Você pode combinar a estrutura de uma lista, incluindo seu comprimento e elementos individuais.
Aqui está um exemplo de correspondência de padrões com uma lista:
Example:
Neste exemplo, a função listLength pega um parâmetro de lista e o compara com quatro padrões usando a expressão de correspondência. Se a lista estiver vazia, a função retorna 0. Se a lista tiver um elemento, a função retornará 1. Se a lista tiver dois elementos, a função retornará 2. Se a lista tiver mais de dois elementos, a função retornará 3.
Correspondência de padrões com registros
Registros do usuário usando a técnica de correspondência de padrões:
Example:
Exemplo de Explicação
Como grupo, definimos um tipo de registro chamado user com os campos Name , Age , City e Dob que representam as informações do usuário. Em seguida, criamos uma função chamada printUserInfo que recebe um registro do usuário como entrada.
Quando chamamos a função printUserInfo com user1, usamos correspondência de padrão para desestruturar o registro do usuário em seus campos Nome, Idade, Cidade e Dob usando o padrão de registro { Nome = nome; Idade = idade; Cidade = cidade; Dob = dob; }. Em seguida, imprimimos os valores desses campos usando a função printfn com a formatação apropriada.
A saída do usuário1 seria:
Name: John Age: 25 City: New York Date of Birth: 18/March/2002
Da mesma forma, quando chamamos a função printUserInfo com user2, ela imprime os valores dos campos do registro user2 de maneira semelhante.
User2 produziria:
Name: Ben Age: 32 City: San Antonio Date of Birth: 12/August/1998
Benefícios da Correspondência de Padrão F#
Aqui estão alguns benefícios de usar a correspondência de padrões F#:
- A correspondência de padrão F# permite que você escreva um código conciso e expressivo que seja fácil de ler e entender. Você pode combinar valores com padrões, eliminando a necessidade de instruções if-else ou switch longas.
- O uso de correspondência de padrões em seu código melhora a legibilidade tornando o código mais autodocumentável. Com a correspondência de padrões, o código expressa a intenção do desenvolvedor com mais clareza, facilitando a compreensão.
- A correspondência de padrão F# pode ajudar a detectar erros em tempo de compilação, reduzindo a probabilidade de erros de tempo de execução. Ao combinar valores com padrões, você pode garantir que o código seja executado apenas quando os valores atenderem a condições específicas.
- A correspondência de padrões pode ser mais eficiente do que usar instruções if-else ou switch, pois permite que o compilador gere código otimizado. A correspondência de padrões também é menos propensa a erros do que usar outros métodos, pois reduz a chance de introdução de bugs.
- A correspondência de padrões pode ser usada com uma ampla variedade de tipos de dados, incluindo números inteiros, strings e tipos definidos pelo usuário. Você também pode usar a correspondência de padrões com estruturas de dados complexas, como listas e arrays .
Conclusão
A correspondência de padrões é um recurso poderoso do F# que permite comparar valores com padrões e executar ações com base no resultado. No F#, a correspondência de padrões é obtida usando a expressão de correspondência. Você pode combinar diferentes tipos de valores, incluindo números inteiros, strings, tipos definidos pelo usuário e listas. A correspondência de padrões em F# permite que você escreva um código conciso e expressivo, tornando-o uma ferramenta essencial.
Se você gostou deste artigo e o achou informativo sobre a correspondência de padrões F#, você pode deixar seus comentários reagindo abaixo.