Effect-TS의 옵션 순서 이해

王林
풀어 주다: 2024-08-29 11:35:13
원래의
204명이 탐색했습니다.

Understanding Option Sequencing in Effect-TS

예 1: O.andThen을 사용하여 첫 번째 값 무시

개념

O.andThen 함수를 사용하면 두 옵션의 시퀀스를 실행할 수 있으며, 여기서 결과는 두 번째 옵션에 의해서만 결정됩니다. 이는 첫 번째 옵션이 목적을 달성할 때 유용하지만 후속 작업에서는 해당 값이 필요하지 않습니다.

암호

function sequencing_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.andThen(some2))); // Output: Some(2) (ignores 1 and returns 2)
  console.log(pipe(none, O.andThen(some2))); // Output: None (since the first Option is None)
}
로그인 후 복사

설명

  • pipe(some1, O.andThen(some2)): 여기서 some1은 값 1을 보유하지만 작업은 이를 무시하고 2를 보유하는 some2를 반환합니다.
  • pipe(none, O.andThen(some2)): 첫 번째 Option이 None이므로 작업이 단락되어 None을 반환합니다.

이 시퀀싱 작업은 연쇄 작업을 원하지만 두 번째 작업의 결과에만 관심이 있는 경우에 특히 유용합니다.

예 2: O.flaten을 사용하여 중첩 옵션 평면화

개념

O.Flatten 기능은 한 수준의 중첩을 제거하여 중첩된 옵션을 처리하도록 설계되었습니다. 이는 작업 결과가 옵션 중 하나이고 이를 단일 옵션으로 단순화해야 하는 경우에 유용합니다.

암호

function sequencing_ex02() {
  const nestedSome = O.some(O.some(1)); // Create a nested Option containing the value 1
  const nestedNone = O.some(O.none()); // Create a nested Option representing no value
  const none = O.none(); // Create an Option representing no value

  console.log(pipe(nestedSome, O.flatten)); // Output: Some(1) (flattens the nested Option)
  console.log(pipe(nestedNone, O.flatten)); // Output: None (flattens to None)
  console.log(pipe(none, O.flatten)); // Output: None (since the outer Option is None)
}
로그인 후 복사

설명

  • pipe(nestedSome, O.flaten): 이는 Option의 옵션을 단일 Option으로 평면화하여 Some(1)이 됩니다.
  • pipe(nestedNone, O.flaten): 내부 옵션이 None이므로 병합 결과는 None입니다.
  • pipe(none, O.flaten): 외부 Option이 None이면 병합은 효과가 없으며 None이 반환됩니다.

중첩된 옵션을 반환할 수 있는 함수를 처리할 때 결과를 단일 옵션 값으로 간소화할 수 있는 평면화는 필수적입니다.

예제 3: O.composeK를 사용하여 옵션 반환 함수 구성

개념

O.composeK 함수를 사용하면 옵션을 반환하는 두 개의 함수를 구성하여 첫 번째 함수의 출력이 두 번째 함수에 공급되는 파이프라인을 만들 수 있습니다. 이는 실패하여 None이 될 수 있는 연결 작업에 특히 유용합니다.

암호

function sequencing_ex03() {
  const parseNumber = (s: string): O.Option<number> => {
    const n = parseInt(s, 10);
    return isNaN(n) ? O.none() : O.some(n);
  };

  const doubleIfPositive = (n: number): O.Option<number> =>
    n > 0 ? O.some(n * 2) : O.none();

  const parseAndDouble = pipe(parseNumber, O.composeK(doubleIfPositive));

  console.log(parseAndDouble('42')); // Output: Some(84) (parses and doubles the number)
  console.log(parseAndDouble('-1')); // Output: None (since -1 is not positive)
  console.log(parseAndDouble('abc')); // Output: None (since 'abc' is not a number)
}
로그인 후 복사

설명

  • parseAndDouble('42'): 문자열 '42'가 숫자로 구문 분석되었으며, 양수이므로 두 배가 되어 Some(84)이 생성됩니다.
  • parseAndDouble('-1'): 문자열 '-1'이 구문 분석되지만 음수이므로 함수는 None을 반환합니다.
  • parseAndDouble('abc'): 문자열 'abc'는 숫자로 구문 분석할 수 없으므로 함수는 None을 반환합니다.

옵션 반환 함수를 구성하면 복잡한 작업 체인을 생성하는 동시에 체인의 모든 단계가 실패할 수 있는 경우를 안전하게 처리할 수 있습니다.

결론

이러한 예는 일련의 작업을 처리하기 위한 Effect-TS의 Option 유형의 다양성과 강력함을 보여줍니다. O.andThen을 사용하여 값을 무시하거나, O.Flaten을 사용하여 중첩 옵션을 평면화하거나, O.composeK를 사용하여 작업을 구성하는 경우 이러한 패턴을 사용하면 함수형 프로그래밍 컨텍스트에서 선택적 값을 보다 효과적으로 관리할 수 있습니다. 이러한 기술을 활용하면 보다 강력하고 간결한 코드를 작성할 수 있으며, 명확하고 읽기 쉬운 논리를 유지하면서 작업이 값의 부재를 우아하게 처리하도록 보장할 수 있습니다.

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

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