Répète une série d'instructions pour toutes les lignes d'un ensemble de données.
Syntaxe
For Each Row Compteur In Données Do
[Instructions]
End
La syntaxe de l'instruction For Each Row...End se compose des éléments suivants :
Élément |
Description |
|---|---|
Compteur |
Variable qui est utilisée comme compteur de boucle. Il n'est pas nécessaire de déclarer le compteur de boucle avec Dim. |
Données |
L'ensemble de données dont les valeurs doivent être comptées. L'ensemble de données ne peut pas être une valeur scalaire. |
Instructions |
Une ou plusieurs instructions qui sont exécutées pour chaque valeur de Données. |
Remarques
Le bloc For Each Row est exécuté s'il y a au moins une valeur dans Données. Dans ce cas, le programme exécute toutes les instructions de la boucle avec Compteur égal à zéro. La boucle est répétée pour toutes les valeurs de Données, lecompteur prenant les valeurs de zéro jusqu'au nombre de valeurs moins un. Le programme quitte alors la boucle et poursuit l'exécution avec l'instruction qui suit l'instruction End.
Si vous souhaitez itérer toutes les valeurs d'une matrice de données ou d'une série de signaux, vous devez intégrer la boucle For Each Row...End dans une boucle For Each Column...End qui compte les colonnes. Pour chaque boucle, utilisez un nom de variable unique comme Counter.
Vous pouvez modifier la valeur de Compteur à l'intérieur d'une boucle, mais cela rend la compréhension et les tests du code plus difficiles.
Le compteur est souvent utilisé dans la boucle pour indexer une valeur du Data Set.
Remarque : Dans la mesure du possible, vous devez éviter les boucles sur les valeurs individuelles d'un ensemble de données. FPScript vous permet de calculer des ensembles de données complets en une seule instruction. Les boucles peuvent généralement être remplacées par des fonctions d'isolation d'événements en combinaison avec l' opérateur Index. La boucle For Each Value...End est la plus rapide des boucles FPScript.
Disponible dans
FlexPro View, Basic, Professional, Developer Suite
Exemple
L'exemple suivant définit toutes les valeurs d'un signal supérieur à 5.0 à la valeur 5.0 :
Arguments Signal
For Each Row i In Signal Do
If Signal.Y[i] >= 5 Then
Signal.Y[i] = 5
End
End
Signal
En utilisant l'isolation des événements, l'exemple ci-dessus peut être écrit beaucoup plus facilement et efficacement :
Arguments Signal
Signal.Y[ValuesAboveLevel(Signal, 5)] = 5
Signal
Même ce code peut être encore simplifié, puisqu'il existe une fonction Clip intégrée qui effectue l'opération souhaitée :
Arguments Signal
Clip(Signal, , 5)
Voir aussi
Instruction For Each Column...End
Instruction For Each Element...End