4D v18

collection.reduce( )

Accueil

 
4D v18
collection.reduce( )

collection.reduce( )  


 

La méthode collection.reduce( ) applique la méthode de rétro-appel nomMéthode à un accumulateur et à chaque élément de la collection (de gauche à droite) afin de la réduire à une seule valeur.

Note : Cette méthode ne modifie pas la collection d'origine.

Dans nomMéthode, passez le nom de la méthode à utiliser pour évaluer les éléments de la collection, ainsi que son ou ses paramètre(s) dans param (optionnel). nomMéthode traite successivement chaque élément de la collection et accumule le résultat dans $1.accumulator, qui est retourné dans $1.value.

Vous pouvez passer la valeur d'initialisation de l'accumulateur dans valeurInit. Si elle est omise, $1.accumulator débute avec la valeur Indéfini.

nomMéthode reçoit les paramètres suivants :

  • dans $1.value : valeur de l'élément à évaluer
  • dans $2 : param
  • dans $N... : param2...paramN

nomMéthode doit fixer le(s) paramètre(s) suivant(s) :

  • $1.accumulator : valeur à modifier par la méthode et qui est initialisée par valeurInit.
  • $1.stop (booléen, optionnel) : true pour stopper le rétroappel de méthode. La valeur retournée est la dernière calculée.

 C_COLLECTION($c)
 $c:=Creer collection(5;3;5;1;3;4;4;6;2;2)
 $r:=$c.reduce("Multiply";1) //retourne 86400

La méthode Multiply est la suivante :

 Si(Type valeur($1.value)=Est un numérique)
    $1.accumulator:=$1.accumulator*$1.value
 Fin de si

Cet exemple réduit une collection de collections en une seule :

 C_COLLECTION($c;$r)
 $c:=Creer collection
 $c.push(Creer collection(0;1))
 $c.push(Creer collection(2;3))
 $c.push(Creer collection(4;5))
 $c.push(Creer collection(6;7))
 $r:=$c.reduce("Flatten") //$r=[0,1,2,3,4,5,6,7]

La méthode Flatten est la suivante :

 Si($1.accumulator=Null)
    $1.accumulator:=Creer collection
 Fin de si
 $1.accumulator.combine($1.value)

 
PROPRIÉTÉS 

Produit : 4D
Thème : Collections
Nom intl. : collection.reduce( )

Commande(s) éligible(s) à l'exécution dans un process préemptif

 
PAGE CONTENTS 
 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v18)