"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Opciones de compresión en Effect-TS: una guía práctica

Opciones de compresión en Effect-TS: una guía práctica

Publicado el 2024-11-07
Navegar:915

Zipping Options in Effect-TS: A Practical Guide

Opciones de compresión en Effect-TS: una guía práctica

En la programación funcional, combinar múltiples valores opcionales (representados como Opciones) de una manera segura y predecible es una tarea común. Effect-TS proporciona varios métodos para "comprimir" opciones juntas, lo que le permite combinar sus valores o seleccionar uno según reglas específicas. En este artículo, exploraremos tres funciones clave para comprimir opciones: O.zipRight, O.zipLeft y O.zipWith.

Ejemplo 1: devolver la segunda opción con O.zipRight

Concepto

La función O.zipRight te permite combinar dos Opciones, descartando la primera y devolviendo la segunda. Esta operación tiene éxito si ambas opciones son Algunas; de lo contrario, devuelve Ninguno.

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)
}

Explicación

  • pipe(some1, O.zipRight(some2)): Tanto some1 como some2 son Algunos, por lo que la función devuelve la segunda opción, que es Some(2).
  • pipe(some1, O.zipRight(none)): Dado que la segunda opción es Ninguna, la función devuelve Ninguna.
  • pipe(none, O.zipRight(some2)): La primera opción es Ninguna, por lo que la función devuelve Ninguna, independientemente de la segunda opción.

Esta función es particularmente útil cuando desea realizar una operación donde el resultado depende únicamente de la segunda opción.

Ejemplo 2: devolver la primera opción con O.zipLeft

Concepto

La función O.zipLeft es la contraparte de O.zipRight, lo que le permite combinar dos opciones mientras descarta la segunda y devuelve la primera. Nuevamente, esta operación tiene éxito si ambas opciones son Algunas; de lo contrario, devuelve Ninguno.

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)
}

Explicación

  • pipe(some1, O.zipLeft(some2)): Dado que ambas opciones son Algunas, la función devuelve la primera opción, que es Algunas(1).
  • pipe(some1, O.zipLeft(none)): La segunda opción es Ninguna, por lo que la función devuelve Ninguna.
  • pipe(none, O.zipLeft(some2)): Dado que la primera opción es Ninguna, la función devuelve Ninguna.

Esta función es útil cuando el resultado debe ser determinado por la primera Opción, pero aún deseas asegurarte de que la segunda Opción sea válida.

Ejemplo 3: combinar opciones con una función usando O.zipWith

Concepto

La función O.zipWith proporciona la mayor flexibilidad, permitiéndole combinar los valores de dos Opciones usando una función proporcionada. Si ambas opciones son Algunas, se aplica la función y el resultado se incluye en una nueva opción. Si alguna de las opciones es Ninguna, la función devuelve Ninguna.

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)
}

Explicación

  • pipe(some1, O.zipWith(some2, add)): Ambas opciones son Algunas, por lo que se aplica la función agregar, lo que da como resultado Some(3).
  • pipe(some1, O.zipWith(none, add)): Dado que la segunda opción es Ninguna, la función devuelve Ninguna.
  • pipe(none, O.zipWith(some2, add)): La primera opción es Ninguna, por lo que la función devuelve Ninguna.

Esta función es ideal cuando necesita realizar una operación con los valores de dos Opciones, ya que garantiza que ambos valores estén presentes antes de realizar la operación.

Conclusión

Las opciones de compresión en Effect-TS son una forma poderosa de combinar valores opcionales de forma segura. Ya sea que esté interesado en la primera opción, la segunda o una combinación de ambas, las funciones O.zipRight, O.zipLeft y O.zipWith proporcionan las herramientas que necesita para manejar estos escenarios de manera eficiente. Al comprender y aplicar estos patrones, podrá escribir código funcional más sólido y predecible.

Declaración de liberación Este artículo se reproduce en: https://dev.to/almaclaine/zipping-options-in-effect-ts-a-practical-guide-72h?1 Si hay alguna infracción, comuníquese con [email protected] para eliminar él
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3