모나드는 부작용을 관리하고 깔끔하고 구성 가능한 코드를 유지하는 데 도움이 되는 함수형 프로그래밍의 강력한 개념입니다.
이 게시물에서는 실패하거나 null/정의되지 않음을 반환할 수 있는 작업을 처리하는 데 사용되는 JavaScript를 사용하는 Maybe 모나드 디자인 패턴을 살펴보겠습니다.
간단히 말하면 모나드는 값을 래핑하고, 연산을 연결하고, 부작용을 일관된 방식으로 처리할 수 있는 디자인 패턴입니다.
Maybe 모나드는 널 검사로 코드를 어지럽히지 않고 널 또는 정의되지 않은 값을 처리하는 데 특히 유용합니다.
이 모나드는 값을 래핑하고 해당 값이 존재하는 경우 해당 값에 함수를 적용하는 방법을 제공합니다.
// 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; } }
나눗셈을 수행하지만 0으로 나누기를 처리해야 하는 함수를 생각해 보겠습니다.
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
Maybe 모나드는 각 중간 값을 래핑하여 값이 null이 아니거나 정의되지 않은 경우에만 변환을 적용합니다.
safeDivide 함수는 Maybe 모나드를 반환하여 0으로 나누기를 안전하게 처리합니다.
Maybe 모나드는 JavaScript에서 null 또는 정의되지 않은 값을 관리하기 위한 강력한 도구입니다. 모나드에 값을 래핑하면 작업을 안전하게 연결하고 더 깔끔하고 읽기 쉬운 코드를 유지할 수 있습니다. 모나드에 대한 이러한 간단한 접근 방식은 JavaScript의 함수형 프로그래밍 툴킷을 크게 향상시킬 수 있습니다.
더 많은 기술적 통찰력과 실습 튜토리얼을 보려면 rmauro.dev를 방문하세요. 즐거운 코딩하세요!
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3