Las mónadas son un concepto poderoso en programación funcional que ayuda a gestionar los efectos secundarios y mantener un código limpio y componible.
En esta publicación, exploraremos el patrón de diseño de mónada Maybe usando JavaScript, que se usa para manejar operaciones que pueden fallar o devolver valores nulos/indefinidos.
En términos simples, una mónada es un patrón de diseño que le permite envolver valores, encadenar operaciones y manejar efectos secundarios de manera consistente.
La mónada Maybe es particularmente útil para tratar con valores nulos o indefinidos sin ensuciar el código con comprobaciones nulas.
Esta mónada envolverá un valor y proporcionará métodos para aplicar funciones a ese valor si existe.
// Maybe Monad Implementation class Maybe { constructor(value) { this.value = value; } static of(value) { return new Maybe(value); } isNothing() { return this.value === null || this.value === undefined; } map(fn) { return this.isNothing() ? Maybe.of(null) : Maybe.of(fn(this.value)); } getOrElse(defaultValue) { return this.isNothing() ? defaultValue : this.value; } }
Consideremos una función que realiza división pero necesita manejar la división por cero.
const safeDivide = (numerator, denominator) => { return denominator === 0 ? Maybe.of(null) : Maybe.of(numerator / denominator); }; const result = Maybe.of(10) .map(x => x * 2) // 20 .map(x => x 1) // 21 .map(x => safeDivide(x, 0)) // Maybe(null) .getOrElse('Division by zero'); console.log(result); // Output: Division by zero
La mónada Maybe envuelve cada valor intermedio, aplicando transformaciones solo si el valor no es nulo o no está definido.
La función safeDivide devuelve una mónada Maybe, lo que garantiza un manejo seguro de la división por cero.
La mónada Maybe es una poderosa herramienta para administrar valores nulos o indefinidos en JavaScript. Al envolver valores en una mónada, puede encadenar operaciones de forma segura y mantener un código más limpio y legible. Este enfoque sencillo de las mónadas puede mejorar enormemente su kit de herramientas de programación funcional en JavaScript.
Para obtener más información técnica y tutoriales prácticos, visite rmauro.dev. ¡Feliz codificación!
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