Maison  >  Article  >  interface Web  >  Options de filtrage dans Effect-TS : un guide pratique

Options de filtrage dans Effect-TS : un guide pratique

王林
王林original
2024-09-12 10:32:05396parcourir

Filtering Options in Effect-TS: A Practical Guide

Effect-TS fournit diverses méthodes pour filtrer les valeurs à l'intérieur d'une option, vous permettant d'appliquer des transformations, des prédicats ou des vérifications sur la valeur facultative. Ces fonctions permettent de garantir que seules les données pertinentes sont conservées tout en supprimant les valeurs Aucune ou celles qui ne remplissent pas les conditions spécifiées. Dans cet article, nous explorerons quatre fonctions clés pour les options de filtrage : O.partitionMap, O.filterMap, O.filter et O.exists.

Exemple 1 : Partitionner une option avec O.partitionMap

Concept

La fonction O.partitionMap vous permet de partitionner une Option en un tuple de deux Options basé sur une fonction de mappage qui renvoie un Soit. Les valeurs de l'un ou l'autre.left sont réparties dans la première option, tandis que les valeurs de l'autre.right vont dans la deuxième option. Si l'option d'origine est Aucune, les deux partitions sont Aucune.

Code

function filtering_ex01() {
  const some = O.some(1); // Create an Option containing the value 1
  const none = O.none(); // Create an Option representing no value
  const toEither = (n: number) => (n % 2 === 0 ? E.left(n) : E.right(n));

  console.log(pipe(some, O.partitionMap(toEither))); // Output: [None, Some(1)] (1 is odd, so it goes to the right)
  console.log(pipe(none, O.partitionMap(toEither))); // Output: [None, None] (since the Option is None)
}

Explication

  • pipe(some, O.partitionMap(toEither)) : Puisque 1 est impair, la fonction toEither renvoie E.right(1), en plaçant 1 dans la deuxième option, ce qui donne [Aucun, Some(1) ].
  • pipe(none, O.partitionMap(toEither)) : Puisque l'option d'origine est Aucune, les deux partitions sont Aucune, ce qui donne [Aucun, Aucun].

Cette fonction est utile lorsque vous devez appliquer un mappage qui catégorise les valeurs, tout en les séparant en deux groupes : celles qui satisfont à une condition et celles qui ne la satisfont pas.

Exemple 2 : cartographie et filtrage avec O.filterMap

Concept

La fonction O.filterMap applique une fonction de transformation à la valeur à l'intérieur d'une option. Si la fonction renvoie Some, la valeur est conservée ; s'il renvoie Aucun, la valeur est filtrée. Si l'option d'origine est Aucune, le résultat reste Aucun.

Code

function filtering_ex02() {
  const some = O.some(1); // Create an Option containing the value 1
  const none = O.none(); // Create an Option representing no value
  const toEven = (n: number) => (n % 2 === 0 ? O.some(n) : O.none());

  console.log(pipe(some, O.filterMap(toEven))); // Output: None (since 1 is not even)
  console.log(pipe(O.some(2), O.filterMap(toEven))); // Output: Some(2) (since 2 is even)
  console.log(pipe(none, O.filterMap(toEven))); // Output: None (since the original Option is None)
}

Explication

  • pipe(some, O.filterMap(toEven)) : Puisque 1 n'est pas pair, la fonction toEven renvoie Aucun et le résultat est Aucun.
  • pipe(O.some(2), O.filterMap(toEven)) : La valeur 2 est paire, donc la fonction toEven renvoie Some(2), et le résultat est Some(2).
  • pipe(none, O.filterMap(toEven)) : Puisque l'option d'origine est Aucune, le résultat reste Aucun.

Cette fonction est utile lorsque vous souhaitez à la fois transformer et filtrer la valeur à l'intérieur d'une option en fonction de conditions spécifiques.

Exemple 3 : Filtrage d'une option avec un prédicat à l'aide de O.filter

Concept

La fonction O.filter vérifie si la valeur à l'intérieur d'une option satisfait un prédicat donné. Si le prédicat est satisfait, il renvoie l'option d'origine ; sinon, il renvoie Aucun. Si l'option d'origine est Aucune, elle reste Aucune.

Code

function filtering_ex03() {
  const some = O.some(1); // Create an Option containing the value 1
  const none = O.none(); // Create an Option representing no value
  const isEven = (n: number) => n % 2 === 0;

  console.log(pipe(some, O.filter(isEven))); // Output: None (since 1 is not even)
  console.log(pipe(O.some(2), O.filter(isEven))); // Output: Some(2) (since 2 is even)
  console.log(pipe(none, O.filter(isEven))); // Output: None (since the original Option is None)
}

Exemple 4 : Vérification d'un prédicat avec O.exists

Concept

La fonction O.exists vérifie si une valeur à l'intérieur d'une option satisfait un prédicat, renvoyant vrai si c'est le cas, et faux si ce n'est pas le cas. Si l'option est Aucune, elle renvoie false.

Code

function filtering_ex04() {
  const some = O.some(1); // Create an Option containing the value 1
  const none = O.none(); // Create an Option representing no value
  const isEven = (n: number) => n % 2 === 0;

  console.log(pipe(some, O.exists(isEven))); // Output: false (since 1 is not even)
  console.log(pipe(O.some(2), O.exists(isEven))); // Output: true (since 2 is even)
  console.log(pipe(none, O.exists(isEven))); // Output: false (since the original Option is None)
}

Explication

  • pipe(some, O.exists(isEven)) : Puisque 1 n'est pas pair, le prédicat n'est pas satisfait, donc le résultat est faux.
  • pipe(O.some(2), O.exists(isEven)) : La valeur 2 satisfait le prédicat, donc le résultat est vrai.
  • pipe(none, O.exists(isEven)) : Puisque l'option est None, le résultat est faux.

Cette fonction est utile lorsque vous avez besoin d'une vérification rapide pour déterminer si la valeur à l'intérieur d'une option satisfait une condition sans transformer ou filtrer l'option elle-même.

Conclusion

Les options de filtrage dans Effect-TS permettent une gestion flexible des valeurs facultatives basées sur des conditions ou des transformations. Que vous partitionniez des valeurs avec O.partitionMap, appliquiez des transformations avec O.filterMap, vérifiiez des prédicats avec O.filter ou vérifiiez simplement des conditions avec O.exists, ces outils fournissent des méthodes robustes pour contrôler la façon dont les options sont gérées. En utilisant ces fonctions, vous pouvez gérer efficacement les données facultatives, en garantissant que seules les valeurs pertinentes sont conservées ou traitées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn