For In Array

Alcance

Language: C#, C/SQL, Cobol, Java, RPG, Visual FoxPro, Visual Basic

Introducción

Se implemento esta estructura de programación que permite recorrer con menos código una colección o un vector de una o más dimensiones.

Sintaxis

For &Var in &Array()

          ...

Endfor

 

&Var tiene que tener el mismo tipo de datos que &Array o compatible.

&Array() debe ser un vector de una o más dimensiones o una colección de estructurados

Descripción

El código anterior, almacena en la variable &Var los valores de cada posición del vector.

Para el caso de vectores de una única dimensión, se expande a:

 

&x = 1

Do while &x <= rows(&Array())

          &Var = &Array( &x)

          ...

          &x = &x + 1

Enddo

 

En el caso de dos dimensiones el comando es análogo

 

  for &var in &arr2()

     …

  endfor

 

Con &arr2 un vector de dos dimensiones  y el código expandido sería:

 

  &x = 1
  Do while &x <= rows( &Array())
     &y = 1
      Do while &y <= cols( &Array())
         &Var = &Array( &x, &y)
          ...
          &y = &y + 1
      Enddo
    &x = &x + 1
 Enddo

Consideraciones

- No es posible modificar los valores del vector en la recorrida. Esto significa que cambios en el valor de &Var, en el alcance de de la estructura, no afectan al correspondiente valor del &Array(X) o viceversa.

 

- No es posible obtener la posición del vector durante la recorrida, para esto es necesario definir un variable que actúe como contador.

 

- Es posible, por ejemplo imprimir los valores de un array o anidar estas estructuras para recorrer (imprimir) varios vectores. Esto considera el caso en que dentro de la estructura se invoca una Subrutina que también tiene un For In &Array. 

 

- Es posible incluir comandos de “corte” de la recorrida, al igual que en for each o do while, como exit o return.