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.
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.
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) }
Esta función es particularmente útil cuando desea realizar una operación donde el resultado depende únicamente de la segunda opción.
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.
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) }
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.
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.
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) }
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.
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.
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