"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Opções de compactação no Effect-TS: um guia prático

Opções de compactação no Effect-TS: um guia prático

Publicado em 2024-11-07
Navegar:548

Zipping Options in Effect-TS: A Practical Guide

Opções de compactação no Effect-TS: um guia prático

Na programação funcional, combinar vários valores opcionais (representados como Opções) de maneira segura e previsível é uma tarefa comum. Effect-TS fornece vários métodos para "compactar" opções, permitindo combinar seus valores ou selecionar um com base em regras específicas. Neste artigo, exploraremos três funções principais para opções de compactação: O.zipRight, O.zipLeft e O.zipWith.

Exemplo 1: Retornando a Segunda Opção com O.zipRight

Conceito

A função O.zipRight permite combinar duas opções, descartando a primeira e retornando a segunda. Esta operação será bem-sucedida se ambas as opções forem Some; caso contrário, retornará Nenhum.

Código

function zipping_ex01() {
  const some1 = O.some(1); // Create an Option containing the value 1
  const some2 = O.some(2); // Create an Option containing the value 2
  const none = O.none(); // Create an Option representing no value

  console.log(pipe(some1, O.zipRight(some2))); // Output: Some(2) (returns the second Option)
  console.log(pipe(some1, O.zipRight(none))); // Output: None (since the second Option is None)
  console.log(pipe(none, O.zipRight(some2))); // Output: None (since the first Option is None)
}

Explicação

  • pipe(some1, O.zipRight(some2)): Ambos some1 e some2 são Some, então a função retorna a segunda Option, que é Some(2).
  • pipe(some1, O.zipRight(none)): Como a segunda opção é None, a função retorna None.
  • pipe(none, O.zipRight(some2)): A primeira opção é None, então a função retorna None, independentemente da segunda Option.

Esta função é particularmente útil quando se deseja realizar uma operação onde o resultado depende apenas da segunda Opção.

Exemplo 2: Retornando a Primeira Opção com O.zipLeft

Conceito

A função O.zipLeft é a contrapartida de O.zipRight, permitindo combinar duas opções enquanto descarta a segunda e retorna a primeira. Novamente, esta operação será bem-sucedida se ambas as opções forem Some; caso contrário, retornará Nenhum.

Código

function zipping_ex02() {
  const some1 = O.some(1); // Create an Option containing the value 1
  const some2 = O.some(2); // Create an Option containing the value 2
  const none = O.none(); // Create an Option representing no value

  console.log(pipe(some1, O.zipLeft(some2))); // Output: Some(1) (returns the first Option)
  console.log(pipe(some1, O.zipLeft(none))); // Output: None (since the second Option is None)
  console.log(pipe(none, O.zipLeft(some2))); // Output: None (since the first Option is None)
}

Explicação

  • pipe(some1, O.zipLeft(some2)): Como ambas as opções são Some, a função retorna a primeira Option, que é Some(1).
  • pipe(some1, O.zipLeft(none)): A segunda opção é None, então a função retorna None.
  • pipe(none, O.zipLeft(some2)): Como a primeira Option é None, a função retorna None.

Esta função é útil quando o resultado deve ser determinado pela primeira opção, mas você ainda deseja garantir que a segunda opção seja válida.

Exemplo 3: Combinando opções com uma função usando O.zipWith

Conceito

A função O.zipWith oferece maior flexibilidade, permitindo combinar os valores de duas opções usando uma função fornecida. Se ambas as opções forem Some, a função será aplicada e o resultado será agrupado em uma nova opção. Se qualquer uma das opções for None, a função retornará None.

Código

function zipping_ex03() {
  const some1 = O.some(1); // Create an Option containing the value 1
  const some2 = O.some(2); // Create an Option containing the value 2
  const none = O.none(); // Create an Option representing no value
  const add = (a: number, b: number) => a   b;

  console.log(pipe(some1, O.zipWith(some2, add))); // Output: Some(3) (since 1   2 = 3)
  console.log(pipe(some1, O.zipWith(none, add))); // Output: None (since the second Option is None)
  console.log(pipe(none, O.zipWith(some2, add))); // Output: None (since the first Option is None)
}

Explicação

  • pipe(some1, O.zipWith(some2, add)): Ambas as opções são Some, então a função add é aplicada, resultando em Some(3).
  • pipe(some1, O.zipWith(none, add)): Como a segunda opção é None, a função retorna None.
  • pipe(none, O.zipWith(some2, add)): A primeira opção é None, então a função retorna None.

Esta função é ideal quando você precisa realizar uma operação nos valores de duas Opções, pois garante que ambos os valores estejam presentes antes da operação ser realizada.

Conclusão

Zipping Options no Effect-TS é uma maneira poderosa de combinar valores opcionais com segurança. Esteja você interessado na primeira Option, na segunda ou em uma combinação de ambas, as funções O.zipRight, O.zipLeft e O.zipWith fornecem as ferramentas necessárias para lidar com esses cenários com eficiência. Ao compreender e aplicar esses padrões, você pode escrever um código funcional mais robusto e previsível.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/almaclaine/zipping-options-in-effect-ts-a-practical-guide-72h?1 Se houver alguma violação, entre em contato com [email protected] para excluir isto
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3