- Fonctionnement
- Agrégations existantes
- Equivalence
Agrège (Fonction) En anglais : Reduce Exécute une opération d'agrégation sur chaque élément d'un tableau WLangage. Versions 27 et supérieures Nouveauté 27
tabValeur est un tableau d'entiers = [1,2,3,4,5] LaSomme est un entier LaSomme = Agrège(tabValeur, (Valeur, ... VariableDeCalculeSomme) => { RENVOYER Valeur + VariableDeCalculeSomme }, 0) Trace(LaSomme) // note : cet exemple est didactique ; pour faire la somme des éléments d'un tableau, // il est préférable d'utiliser la fonction Somme
// -> compter dans un tableau le nombre de chaînes contenant la lettre "e" // (Syntaxe préfixée) tab3 est un tableau de chaînes = ["un","une","des","nos","leurs"] soit Cpt = Agrège(tab3, ( Source, Total ) => { RENVOYER Total + ( Source [=] "e" ? 1 SINON 0 ) }, 0 ) // Cpt = 3
Syntaxe
<Résultat> = Agrège(<Tableau> , <Opération à effectuer> [, <Valeur initiale>])
<Résultat> : Type correspondant au résultat Résultat de l'opération d'agrégation demandée. <Tableau> : Tableau WLangage Nom de la variable de type Tableau à manipuler. Ce tableau doit être un tableau à une dimension. <Opération à effectuer> : Procédure WLangage Nom de la procédure WLangage à exécuter. Cette procédure peut être : - une procédure globale ou locale,
- une procédure interne.
Il est également possible d'utiliser directement une lambda. <Valeur initiale> : Paramètre optionnel, type correspondant à la valeur initiale Valeur initiale à utiliser lors de la première exécution de la procédure <Opération à effectuer>. Remarques Fonctionnement La procédure <Opération à effectuer> est appelée une première fois avec deux paramètres : - le premier élément du tableau,
- la valeur initiale spécifiée avec le paramètre <Valeur initiale>.
La procédure est ensuite appelée pour tous les autres éléments du tableau avec deux paramètres : - l'élément du tableau,
- la valeur renvoyée par l'appel précédent.
Exemple didactiqueConsidérons l'exemple suivant :
tabValeur est un tableau d'entiers = [1,2,3,4,5] LaSomme est un entier LaSomme = Agrège(tabValeur, (Valeur, LaSomme) => { RENVOYER Valeur + LaSomme }, 0)
Dans cet exemple, le code :
LaSomme = Agrège(tabValeur, (Valeur, LaSomme) => { RENVOYER Valeur + LaSomme }, 0)
est équivalent au code suivant :
LaSomme = Agrège(tabValeur, Additionne, 0) PROCÉDURE INTERNE Additionne(Valeur, Total) RENVOYER Valeur + Total FIN
Avec cette procédure interne, il est possible de découper le calcul de la façon suivante : - RésultatIntermédiaire1 = Additionne (t[1], ValeurInitiale) : dans l'exemple Additionne( 1, 0 ) -> 1
- RésultatIntermédiaire2 = Additionne (t[2], RésultatIntermédiaire1) : dans l'exemple Additionne( 2, 1 ) -> 3
- ...
Note : cet exemple est didactique ; pour faire la somme des éléments d'un tableau, il est préférable d'utiliser la fonction Somme. Agrégations existantes Les agrégations les plus courantes sont disponibles en WLangage :
| | Moyenne | Calcule la moyenne de plusieurs éléments : - éléments d'un tableau,
- valeurs numériques, ...
| Versions 17 et supérieuresSomme Somme | Calcule la somme des éléments d'un tableau. |
Equivalence La syntaxe POUR TOUT permet également de parcourir les éléments d'un tableau pour réaliser des agrégations.
Liste des exemples associés :
|
Exemples unitaires (WINDEV) : Les fonctions Filtre / Transforme / Agrège
[ + ] Cet exemple montre l'utilisation des fonctions Filtre / Transforme / Agrège. Le concept de Filter / Map / Reduce (Filtre / Transforme / Agrège en français) permet de réaliser des opérations sur des collections de données de manière extrêmement concise. La fonction Filtre permet de filtrer un tableau d'éléments de manière personnalisée (avec une procédure callback). La fonction Transforme permet de transformer un tableau d'éléments, toujours avec une procédure callback. La fonction Agrège permet d'agréger des données de manière personnalisée avec une procédure callback. Ici, cet exemple permet de calculer l'âge moyen des femmes parmi les utilisateurs affichés dans un champ Table.
|
Classification Métier / UI : Code neutre
Documentation également disponible pour…
|
|
|