В функциональном программировании объединение нескольких необязательных значений (представленных как Options) безопасным и предсказуемым способом является распространенной задачей. Effect-TS предоставляет несколько методов «сжатия» опций вместе, что позволяет комбинировать их значения или выбирать одно на основе определенных правил. В этой статье мы рассмотрим три ключевые функции для параметров архивирования: O.zipRight, O.zipLeft и O.zipWith.
Функция 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) }
Эта функция особенно полезна, если вы хотите выполнить операцию, результат которой зависит исключительно от второго параметра.
Функция 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) }
Эта функция полезна, когда результат должен определяться первым вариантом, но вы все равно хотите убедиться, что второй вариант действителен.
Функция 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) }
Эта функция идеальна, когда вам нужно выполнить операцию над значениями двух параметров, поскольку она гарантирует, что оба значения присутствуют до выполнения операции.
Параметры архивирования в Effect-TS — это мощный способ безопасного объединения необязательных значений. Независимо от того, интересует ли вас первый вариант, второй или комбинация обоих, функции O.zipRight, O.zipLeft и O.zipWith предоставляют инструменты, необходимые для эффективной обработки этих сценариев. Понимая и применяя эти шаблоны, вы сможете писать более надежный и предсказуемый функциональный код.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3