Maison >interface Web >js tutoriel >Utilisation de la notation do dans les options Effect-TS

Utilisation de la notation do dans les options Effect-TS

PHPz
PHPzoriginal
2024-07-23 10:32:231005parcourir

Using do Notation in Effect-TS Optionals

Effect-TS fournit un moyen puissant de gérer les opérations dans le contexte Option en utilisant la notation do. Cet article explore comment séquencer plusieurs opérations avec la notation do et présente divers scénarios à travers des exemples.

Exemple 1 : séquençage et filtrage de base

Dans cet exemple, nous lions des valeurs dans le contexte Option, calculons une somme et filtrons en fonction d'une condition.

import { Option as O, pipe } from 'effect';

function do_ex01() {
  const result = pipe(
    O.Do,
    O.bind('x', () => O.some(2)), // Bind x to the value 2 wrapped in Some
    O.bind('y', () => O.some(3)), // Bind y to the value 3 wrapped in Some
    O.let('sum', ({ x, y }) => x + y), // Let sum be the sum of x and y
    O.filter(({ x, y }) => x * y > 5) // Filter the result if x * y > 5
  );
  console.log(result); // Output: Some({ x: 2, y: 3, sum: 5 }) (since 2 * 3 > 5)
}

Explication :

  • Valeurs de liaison : nous lions x à 2 et y à 3, tous deux enveloppés dans Some.
  • Calcul de la somme : nous calculons la somme comme la somme de x et y.
  • Filtrage : Nous filtrons le résultat en fonction de la condition x * y > 5.

La sortie est Some({ x : 2, y : 3, sum : 5 }) car la condition 2 * 3 > 5 est atteint.

Exemple 2 : Filtrage avec une condition défaillante

Cet exemple montre que si la condition de filtre échoue, le résultat est Aucun.

function do_ex02() {
  const result = pipe(
    O.Do,
    O.bind('x', () => O.some(1)), // Bind x to the value 1 wrapped in Some
    O.bind('y', () => O.some(2)), // Bind y to the value 2 wrapped in Some
    O.let('sum', ({ x, y }) => x + y), // Let sum be the sum of x and y
    O.filter(({ x, y }) => x * y > 5) // Filter the result if x * y > 5
  );
  console.log(result); // Output: None (since 1 * 2 <= 5)
}

Explication :

  • Valeurs de liaison : nous lions x à 1 et y à 2.
  • Calcul de la somme : nous calculons la somme comme la somme de x et y.
  • Filtrage : Nous filtrons le résultat en fonction de la condition x * y > 5.

    La sortie est Aucune car la condition 1 * 2 <= 5 échoue.

    Exemple 3 : Liaison avec Aucun

    Cet exemple démontre que si une liaison est Aucune, le résultat est Aucune.

    function do_ex03() {
      const result = pipe(
        O.Do,
        O.bind('x', () => O.some(2)), // Bind x to the value 2 wrapped in Some
        O.bind('y', () => O.none()), // Bind y to None
        O.let('sum', ({ x, y }) => x + y), // This line won't execute since y is None
        O.filter(({ x, y }) => x * y > 5) // This line won't execute since y is None
      );
      console.log(result); // Output: None (since y is `None`)
    }
    </p>

    Explication :

    • Valeurs de liaison : nous lions x à 2 et y à Aucun.
    • Sauter le calcul et le filtrage : puisque y vaut Aucun, les opérations suivantes sont ignorées.

    La sortie est None car l'une des liaisons (y) estNone`.

    Résumé

    La notation do dans Effect-TS permet un séquençage élégant et lisible des opérations dans le contexte Option. En liant les valeurs, en laissant les valeurs calculées et en filtrant en fonction des conditions, nous pouvons gérer une logique facultative complexe de manière simple. Les exemples ci-dessus illustrent comment le résultat change en fonction de différentes conditions et de la présence de Aucun.

    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