EVAL( )
Evalúa un bloque de código
Sintaxis
EVAL(<bBloque>, [<ListaArgBloque>]) –> UltimoValorBloque
Argumentos
<bBloque> es el bloque de código que se debe evaluar.
<ListaArgBloque> es una lista de argumentos para enviar al bloque de código antes de que se evalúe.
Devuelve
EVAL() devuelve el valor de la última expresión dentro del bloque. Un bloque de código puede devolver un valor de cualquier tipo.
Descripción
EVAL() es una función de bloque de código. Es la función más básica de evaluación de bloque de código del sistema DPXBASE. Un bloque de código es un valor de datos especial que hace referencia a un fragmento de código de programa compilado. Para obtener más información sobre bloques de código, consulte el capítulo Conceptos Básicos de la guía Programación y Utilidades.
Para ejecutar o evaluar un bloque de código, llame a EVAL() con el valor de bloque y cualquier parámetro. Cuando se ejecuta el bloque se le suministran los parámetros. Los bloques de código pueden ser una serie de expresiones separadas por comas. Cuando se evalúa un bloque de código, el valor de retorno es el valor de la última expresión del bloque.
Normalmente, el compilador de DPXBASE compila un bloque de código en el tiempo de compilación. Sin embargo, existen ocasiones en las que es necesario compilar un bloque de código desde una cadena de caracteres en tiempo de ejecución. Este proceso puede realizarse utilizando el operador de macroexpresiones (&).
EVAL() se utiliza, con frecuencia, para crear funciones de iteración. Estas son funciones que aplican un bloque a cada miembro de una estructura de datos. AEVAL(), ASORT(), ASCAN() y DBEVAL() son funciones de iteración (por ejemplo, AEVAL() evalúa un bloque para cada elemento de una matriz).
Ejemplos
¦ En este ejemplo se crea un bloque de código que incrementa un
número y después lo evalúa:
bBloque := { nArg nArg + 1 }
? EVAL(bBloque, 1) // Resultado: 2
¦ En este ejemplo se muestra la compilación de un bloque de
código en el tiempo de ejecución utilizando el operador de
macroexpresiones (&):
// Compilar una cadena en un bloque
bBloque := &(“{ nArg nArg + 1 }”)
// Evaluar el bloque
? EVAL(bBloque, 1)
Ficheros: La biblioteca asociada es DPXBASE.CH.