En programmation fonctionnelle, combiner plusieurs valeurs facultatives (représentées sous forme d'options) de manière sûre et prévisible est une tâche courante. Effect-TS propose plusieurs méthodes pour « compresser » les options ensemble, vous permettant de combiner leurs valeurs ou d'en sélectionner une en fonction de règles spécifiques. Dans cet article, nous explorerons trois fonctions clés pour les options de compression : O.zipRight, O.zipLeft et O.zipWith.
La fonction O.zipRight vous permet de combiner deux options, en supprimant la première et en renvoyant la seconde. Cette opération réussit si les deux options sont certaines ; sinon, il renvoie Aucun.
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) }
Cette fonction est particulièrement utile lorsque vous souhaitez effectuer une opération dont le résultat dépend uniquement de la deuxième Option.
La fonction O.zipLeft est l'équivalent de O.zipRight, vous permettant de combiner deux options tout en supprimant la seconde et en renvoyant la première. Encore une fois, cette opération réussit si les deux options sont certaines ; sinon, il renvoie Aucun.
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) }
Cette fonction est utile lorsque le résultat doit être déterminé par la première option, mais que vous souhaitez toujours vous assurer que la deuxième option est valide.
La fonction O.zipWith offre la plus grande flexibilité, vous permettant de combiner les valeurs de deux options à l'aide d'une fonction fournie. Si les deux Options sont Some, la fonction est appliquée et le résultat est enveloppé dans une nouvelle Option. Si l’une des options est Aucune, la fonction renvoie Aucun.
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) }
Cette fonction est idéale lorsque vous devez effectuer une opération sur les valeurs de deux options, car elle garantit que les deux valeurs sont présentes avant que l'opération ne soit effectuée.
Les options de compression dans Effect-TS sont un moyen puissant de combiner des valeurs facultatives en toute sécurité. Que vous soyez intéressé par la première option, la seconde ou une combinaison des deux, les fonctions O.zipRight, O.zipLeft et O.zipWith fournissent les outils dont vous avez besoin pour gérer efficacement ces scénarios. En comprenant et en appliquant ces modèles, vous pouvez écrire un code fonctionnel plus robuste et prévisible.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3