Effect-TS 옵션에서 do 표기법 사용

PHPz
풀어 주다: 2024-07-23 10:32:23
원래의
984명이 탐색했습니다.

Using do Notation in Effect-TS Optionals

Effect-TS는 do 표기법을 사용하여 Option 컨텍스트 내에서 작업을 처리하는 강력한 방법을 제공합니다. 이 문서에서는 do 표기법을 사용하여 여러 작업의 순서를 지정하는 방법을 살펴보고 예제를 통해 다양한 시나리오를 보여줍니다.

예 1: 기본 시퀀싱 및 필터링

이 예에서는 옵션 컨텍스트 내에서 값을 바인딩하고, 합계를 계산하고, 조건에 따라 필터링합니다.

import { Option as O, pipe } from 'effect';

function do_ex01() {
  const result = pipe(
    O.Do,
    O.bind('x', () => O.some(2)), // Bind x to the value 2 wrapped in Some
    O.bind('y', () => O.some(3)), // Bind y to the value 3 wrapped in Some
    O.let('sum', ({ x, y }) => x + y), // Let sum be the sum of x and y
    O.filter(({ x, y }) => x * y > 5) // Filter the result if x * y > 5
  );
  console.log(result); // Output: Some({ x: 2, y: 3, sum: 5 }) (since 2 * 3 > 5)
}
로그인 후 복사

설명:

  • 값 바인딩: x를 2에, y를 3에 바인딩하고 둘 다 Some으로 래핑합니다.
  • 합 계산: x와 y의 합으로 합을 계산합니다.
  • 필터링: x * y > 조건을 기준으로 결과를 필터링합니다. 5.

조건이 2 * 3 >이므로 출력은 Some({ x: 2, y: 3, sum: 5 })입니다. 5가 충족되었습니다.

예 2: 실패 조건으로 필터링

이 예에서는 필터 조건이 실패할 경우 결과가 없음임을 보여줍니다.

function do_ex02() {
  const result = pipe(
    O.Do,
    O.bind('x', () => O.some(1)), // Bind x to the value 1 wrapped in Some
    O.bind('y', () => O.some(2)), // Bind y to the value 2 wrapped in Some
    O.let('sum', ({ x, y }) => x + y), // Let sum be the sum of x and y
    O.filter(({ x, y }) => x * y > 5) // Filter the result if x * y > 5
  );
  console.log(result); // Output: None (since 1 * 2 <= 5)
}
로그인 후 복사

설명:

  • 값 바인딩: x를 1에, y를 2에 바인딩합니다.
  • 합 계산: x와 y의 합으로 합을 계산합니다.
  • 필터링: x * y > 조건을 기준으로 결과를 필터링합니다. 5.

    조건 1 * 2 <= 5가 실패하므로 출력은 None입니다.

    예 3: 없음으로 바인딩

    이 예는 바인딩이 None이면 결과도 None임을 보여줍니다.

    function do_ex03() {
      const result = pipe(
        O.Do,
        O.bind('x', () => O.some(2)), // Bind x to the value 2 wrapped in Some
        O.bind('y', () => O.none()), // Bind y to None
        O.let('sum', ({ x, y }) => x + y), // This line won't execute since y is None
        O.filter(({ x, y }) => x * y > 5) // This line won't execute since y is None
      );
      console.log(result); // Output: None (since y is `None`)
    }
    </p>
    로그인 후 복사

    설명:

    • 값 바인딩: x를 2에 바인딩하고 y를 None에 바인딩합니다.
    • 계산 건너뛰기 및 필터링: y가 None이므로 후속 작업을 건너뜁니다.

    바인딩(y) 중 하나가None`이므로 출력은 None입니다.

    요약

    Effect-TS의 do 표기법을 사용하면 Option 컨텍스트 내에서 우아하고 읽기 쉬운 작업 순서를 지정할 수 있습니다. 값을 바인딩하고, 계산된 값을 허용하고, 조건에 따라 필터링함으로써 복잡한 선택적 논리를 간단한 방식으로 처리할 수 있습니다. 위의 예는 다양한 조건과 없음 유무에 따라 결과가 어떻게 변하는지 보여줍니다.

    위 내용은 Effect-TS 옵션에서 do 표기법 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿