AEVAL ( )
Ejecuta un bloque de código en cada elemento de una matriz
Sintaxis
AEVAL(, ,
[], []) –> aMatriz
Argumentos
es la matriz que se va a recorrer.
es el bloque de código que se va a ejecutar en cada elemento encontrado.
es el elemento inicial. Si no se especifica, el valor por defecto es el elemento uno.
es el número de elementos que se van a procesar, contados desde . Si no se especifica, el valor por defecto es todos los elementos hasta el final de la matriz.
Devuelve
AEVAL() devuelve una referencia a .
Descripción
AEVAL() es una función de matrices que evalúa un bloque de código en cada elemento de una matriz, pasando el valor y el índice del elemento como parámetros al bloque. El valor devuelto por el bloque se ignora. Se procesan todos los elementos de , a no ser que se especifique o .
AEVAL() no comprueba el contenido de los elementos de matriz que pasa al bloque. Se supone que el bloque correspondiente conoce el tipo de datos que hay en cada elemento.
AEVAL() es similar a DBEVAL(), que aplica un bloque a cada registro de un fichero de base de datos. Al igual que DBEVAL(), AEVAL() puede utilizarse como primitiva para crear mandatos iterativos, tanto para estructuras de matriz simples como complejas.
Si desea más información sobre la teoría y la sintaxis de los bloques de código, consulte la sección Bloques de Código del capítulo Conceptos Básicos de la guía de Programación y Utilidades.
Ejemplos
¦ El ejemplo siguiente utiliza AEVAL() para mostrar en pantalla
una matriz de nombres y tamaños de fichero devueltos por la función
DIRECTORY():
#include “Directry.ch”
//
LOCAL aFicheros := DIRECTORY(“*.dbf”), nTotal := 0
AEVAL(aFicheros,;
{ aFicheroDBF ;
QOUT(PADR(aFicheroDBF[F_NAME], 10), aFicheroDBF[F_SIZE]),;
nTotal += aFicheroDBF[F_SIZE]);
} )
//
?
? “Bytes totales:”, nTotal
¦ El ejemplo siguiente utiliza AEVAL() para crear una lista
formada por los elementos seleccionados en una matriz
multidimensional:
#include “Directry.ch”
//
LOCAL aFicheros := DIRECTORY(“*.dbf”), aNombres := {}
AEVAL(aFicheros,;
{ fichero AADD(aNombres, fichero[F_NAME]) };
)
¦ El ejemplo siguiente modifica el contenido de un elemento de
matriz, dependiendo de una condición. Observe la utilización de los
parámetros de bloque de código: */
LOCAL aMatriz[6]
AFILL(aMatriz,”anterior”)
AEVAL(aMatriz,;
{cValor,nIndice IF(cValor == “anterior”,;
aMatriz[nIndice] := “nuevo”,)})
Ficheros: La biblioteca asociada es DPXBASE.CH.