"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Options de compression dans Effect-TS : un guide pratique

Options de compression dans Effect-TS : un guide pratique

Publié le 2024-11-07
Parcourir:280

Zipping Options in Effect-TS: A Practical Guide

Options de compression dans Effect-TS : un guide pratique

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.

Exemple 1 : renvoyer la deuxième option avec O.zipRight

Concept

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.

Code

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

Explication

  • pipe(some1, O.zipRight(some2)): some1 et some2 sont Some, donc la fonction renvoie la deuxième option, qui est Some(2).
  • pipe(some1, O.zipRight(none)): Puisque la deuxième option est None, la fonction renvoie None.
  • pipe(none, O.zipRight(some2)): La première option est Aucune, donc la fonction renvoie Aucun, quelle que soit la deuxième option.

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.

Exemple 2 : renvoyer la première option avec O.zipLeft

Concept

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.

Code

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

Explication

  • pipe(some1, O.zipLeft(some2)): Puisque les deux options sont Some, la fonction renvoie la première option, qui est Some(1).
  • pipe(some1, O.zipLeft(none)): La deuxième option est None, donc la fonction renvoie None.
  • pipe(none, O.zipLeft(some2)): Puisque la première option est None, la fonction renvoie 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.

Exemple 3 : Combinaison d'options avec une fonction à l'aide de O.zipWith

Concept

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.

Code

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

Explication

  • pipe(some1, O.zipWith(some2, add)): Les deux options sont Some, donc la fonction d'ajout est appliquée, ce qui donne Some(3).
  • pipe(some1, O.zipWith(none, add)): Puisque la deuxième option est None, la fonction renvoie None.
  • pipe(none, O.zipWith(some2, add)): La première option est None, donc la fonction renvoie 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.

Conclusion

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.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/almaclaine/zipping-options-in-effect-ts-a-practical-guide-72h?1 En cas de violation, veuillez contacter [email protected] pour supprimer il
Dernier tutoriel Plus>

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