«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Параметры архивирования в Effect-TS: практическое руководство

Параметры архивирования в Effect-TS: практическое руководство

Опубликовано 7 ноября 2024 г.
Просматривать:963

Zipping Options in Effect-TS: A Practical Guide

Параметры архивирования в Effect-TS: практическое руководство

В функциональном программировании объединение нескольких необязательных значений (представленных как Options) безопасным и предсказуемым способом является распространенной задачей. Effect-TS предоставляет несколько методов «сжатия» опций вместе, что позволяет комбинировать их значения или выбирать одно на основе определенных правил. В этой статье мы рассмотрим три ключевые функции для параметров архивирования: O.zipRight, O.zipLeft и O.zipWith.

Пример 1. Возврат второго параметра с помощью O.zipRight

Концепция

Функция O.zipRight позволяет объединить два параметра, отбросив первый и вернув второй. Эта операция завершается успешно, если оба параметра имеют значение «Некоторые»; в противном случае возвращается None.

Код

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)
}

Объяснение

  • pipe(some1, O.zipRight(some2)): И some1, и some2 — Some, поэтому функция возвращает второй вариант — Some(2).
  • pipe(some1, O.zipRight(none)): Поскольку второй параметр имеет значение None, функция возвращает None.
  • pipe(none, O.zipRight(some2)): Первый параметр — None, поэтому функция возвращает None, независимо от второго параметра.

Эта функция особенно полезна, если вы хотите выполнить операцию, результат которой зависит исключительно от второго параметра.

Пример 2. Возврат первого параметра с помощью O.zipLeft

Концепция

Функция O.zipLeft является аналогом O.zipRight, позволяя комбинировать два параметра, отбрасывая второй и возвращая первый. Опять же, эта операция завершается успешно, если оба параметра являются некоторыми; в противном случае возвращается None.

Код

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)
}

Объяснение

  • pipe(some1, O.zipLeft(some2)): Поскольку оба параметра имеют значение Some, функция возвращает первый вариант, который равен Some(1).
  • pipe(some1, O.zipLeft(none)): Второй параметр — None, поэтому функция возвращает None.
  • pipe(none, O.zipLeft(some2)): Поскольку первый параметр имеет значение None, функция возвращает None.

Эта функция полезна, когда результат должен определяться первым вариантом, но вы все равно хотите убедиться, что второй вариант действителен.

Пример 3. Объединение параметров с функцией с помощью O.zipWith

Концепция

Функция O.zipWith обеспечивает максимальную гибкость, позволяя комбинировать значения двух параметров с помощью предоставленной функции. Если оба параметра имеют значение «Некоторые», функция применяется, а результат помещается в новый параметр. Если любой из параметров имеет значение None, функция возвращает None.

Код

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)
}

Объяснение

  • pipe(some1, O.zipWith(some2, add)): Оба параметра являются некоторыми, поэтому применяется функция добавления, в результате чего получается Some(3).
  • pipe(some1, O.zipWith(none, add)): Поскольку второй параметр имеет значение None, функция возвращает None.
  • pipe(none, O.zipWith(some2, add)): Первый параметр — None, поэтому функция возвращает None.

Эта функция идеальна, когда вам нужно выполнить операцию над значениями двух параметров, поскольку она гарантирует, что оба значения присутствуют до выполнения операции.

Заключение

Параметры архивирования в Effect-TS — это мощный способ безопасного объединения необязательных значений. Независимо от того, интересует ли вас первый вариант, второй или комбинация обоих, функции O.zipRight, O.zipLeft и O.zipWith предоставляют инструменты, необходимые для эффективной обработки этих сценариев. Понимая и применяя эти шаблоны, вы сможете писать более надежный и предсказуемый функциональный код.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/almaclaine/zipping-options-in-effect-ts-a-practical-guide-72h?1 Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить это
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3