Réduire

Vous pouvez également inclure d'autres entrées dont votre flux pourrait avoir besoin. Après avoir défini vos entrées, créez le reste du flux d'aide, en terminant par une carte Retourner (qui se trouve dans la catégorie Contrôle). Elle renvoie la nouvelle valeur cumulée qui devra être transmise avec l'élément suivant de la liste au prochain appel du flux d'aide. S'il n'y a plus d'éléments dans la liste, il s'agira du résultat de la fonction Réduire. Si la valeur cumulée est un type autre qu'un objet (par exemple, un nombre), il ne doit y avoir qu'un seul champ de retour de ce type et son nom n'a pas d'importance. Si l'accumulateur est un objet, il doit y avoir un champ pour chacune des clés de l'objet et les noms des champs doivent correspondre aux noms des clés.

Champs d'entrée

Renseignez la carte Réduire comme suit :

  • liste : la liste à traiter

  • flux : le flux d'aide (tel que décrit ci-dessus) qui sera appelé une fois pour chaque élément de la liste

  • avec les valeurs suivantes (générées de façon dynamique) :

    • élément : (aura le nom que vous avez choisi lorsque vous avez créé votre flux d'aide) cliquez dans le champ qui contiendra l'élément actuel de la liste et choisissez « Élément ». (Ou, dans certains cas, vous pouvez également sélectionner un chemin spécifique dans un objet.)

    • mémo : Définissez le type de ce champ pour qu'il corresponde au type que vous souhaitez pour votre résultat final (par exemple, si vous utilisez Réduire pour obtenir une somme, le type doit être nombre.) Fournissez la valeur de départ (par exemple, pour effectuer une somme, commencez par zéro).

    • Vous pouvez avoir des champs supplémentaires facultatifs dans la carte d'événement du flux d'aide que vous avez choisi, et ils apparaîtront également comme champs d'entrée.

Champs de sortie

élément : la valeur qui résulte de l'exécution du flux d'aide sur chacun des éléments. Assurez-vous de définir le type d'élément de façon à ce qu'il corresponde au type du mémo d'entrée.

Exemples

Supposons que vous ayez une liste de nombres et que vous souhaitiez utiliser Réduire pour déterminer le plus grand d'entre eux. Vous devez d'abord créer un flux d'aide. Démarrez l'événement flux avec un événement Flux d'aide et ajoutez deux champs : « élément actuel » (un nombre) et « mémo » (un nombre).

La carte suivante est une fonction Contrôle - AssignIf qui produit le plus grand de ces deux nombres.

La carte finale est une fonction Contrôle - Return qui renvoie la sortie de la carte AssignIf en tant que nouveau mémo. Enregistrez ce flux en tant que « interne-max » et activez-le.

Vous pouvez maintenant créer une carte Réduire la liste qui accepte les listes de nombres. Cliquez sur Choisir le flux et sélectionnez le flux « interne-max » que vous venez de créer. Cliquez sur l'entrée « élément actuel » et sélectionnez « Élément » dans la liste déroulante. Cliquez sur l'entrée « mémo » et saisissez zéro (comme valeur de départ).

Voici à quoi ressemblera votre carte Réduire :

Voici à quoi ressemble le flux d'aide :

Voici comment la carte Réduire fonctionnera pour l'exemple ci-dessus :

Supposons que vous lui avez transmis une valeur de liste de [1, 7, 4, 19, 2]. Le flux d'aide « inner-max » sera appelé 5 fois – une fois pour chaque élément de la liste de la manière suivante :

  • la permière fois, la valeur de l'élément actuel est 1 et la valeur du mémo est le 0. Le flux d'aide renvoie le plus grand des deux : 1.

  • La fois suivante, la valeur de l'élément actuel est 7 et la valeur du mémo est 1 (la valeur de retournée à l'étape précédente). Le flux d'aide les compare et renvoie 7.

  • La troisième fois, la valeur de l'élément actuel est4 et la valeur du mémo est le 7. Le flux d'aide renvoie 7.

  • La quatrième fois, la valeur de l'élément actuel est 19 et la valeur du mémo est le 7. Le flux d'aide renvoie 19.

  • La dernière fois, la valeur de l'élément actuel est 2 et la valeur du mémo est le 19. Le flux d'aide renvoie 19 et, comme il n'y a plus d'éléments dans la liste, il s'agit de la sortie finale.

L'exemple ci-dessus implique des calculs simples, mais vous pouvez rendre votre flux d'aide aussi complexe que nécessaire.

Il peut contenir des conditions If/ElseIf, des calculs complexes ou des actions d'application.

Et il n'est pas limité aux nombres et aux calculs : il peut générer un type différent, comme du texte (par exemple, à l'aide de la fonction Concaténer) ou une liste (par exemple, à l'aide de la fonction Ajouter à la fin d'une liste).

Assurez-vous simplement que les types correspondent pour les champs mémo et élément dans la carte Réduire, ainsi que pour le champ mémo dans la carte d'événement du flux d'aide. Et la valeur renvoyée par le flux d'aide dans la carte Retourner doit également correspondre, à moins que le type ne soit objet, auquel cas il doit y avoir un champ dans la carte Retourner qui correspond à chaque clé de l'objet et il doit être nommé de la même manière que la clé.