Repite una serie de instrucciones y recorre todos los valores de un conjunto de datos.
Sintaxis
For Each Value Y[[, X], Z] In ConjuntoDeDatos Do
[Instrucciones]
End
La sintaxis de la instrucción For Each Value...End consta de las siguientes partes:
Parte |
Descripción |
|---|---|
Y, X, Z |
Variables que registran los valores del conjunto de datos. Puede omitir la variable desde la derecha. No es necesario declarar la variable con Dim. |
ConjuntoDeDatos |
El conjunto de datos cuyos valores deben extraerse. El conjunto de datos no debe ser un valor escalar. |
Instrucciones |
Una o varias instrucciones que se ejecutan para cada valor del ConjuntoDeDatos. |
Notas
El bloque For Each Value se ejecuta si hay al menos un valor en el ConjuntoDeDatos. El bucle se repite para todos los valores del ConjuntoDeDatos, y X, Y y Z toman los valores del conjunto de datos. A continuación, el programa sale del bucle y continúa la ejecución con la instrucción que sigue a la instrucción End.
En un conjunto de datos bidimensional, sus columnas se recorren una tras otra. Si se utiliza una variable para un componente que no existe en el conjunto de datos, recibe valores enteros ascendentes de 64 bits que empiezan por 0.
Si un componente recorrido de un ConjuntoDeDatos es un valor, su unidad se transfiere a la variable de ejecución correspondiente.
Nota En la medida de lo posible, evite los bucles sobre valores individuales de un conjunto de datos. FPScript le ofrece la posibilidad de calcular conjuntos de datos completos en una sola instrucción. Por lo general, los bucles pueden sustituirse por funciones de aislamiento de eventos junto con el operador de índice. El bucle For Each Value...End es el bucle FPScript más rápido.
Disponibilidad
FlexPro View, Basic, Professional, Developer Suite
Ejemplo
El siguiente ejemplo recoge en una señal todos los valores mayores o iguales que 5.0:
Arguments Signal
Dim SY, SX
For Each Value Y, X In Signal Do
If Y >= 5 Then
SY := Y
SX := X
End
End
Signal(SY, SX)
El ejemplo anterior puede escribirse de forma mucho más sencilla y eficiente utilizando el aislamiento de eventos:
Arguments Signal
Signal[ValuesAboveLevel(Signal, 5)]
Véase también
Instrucción For Each Column...End
Instrucción For Each Row...End