Sintaxis de las Definiciones de Funciones - AWK

La definición de funciones puede aparecer en cualquier parte entre las reglas de un programa awk. Po lo que la forma general de un programa awk se extiende para incluir secuencias de reglas y definiciones de funciones definidas por el usuario.

La definición de una función sería algo como esto:

function nombre_función (lista_de_parámetros) {
cuerpo-de-la-función
}

La palabra clave function puede ser abreviada a func.

  • Nombre_función es el nombre de la función que se va a definir. Un nombre de función válido tiene la misma forma que un nombre de variable válido: una secuencia de letras, dígitos y subrayados, siempre que no comience con un dígito.
  • Lista_de_parámetros es una lista de los argumentos de las funciones y nombres de variables locales, separadas por comas. Cuando se llama la función, los nombres de los argumentos se usan para guardar los valores de los argumentos pasados en la llamada a la función. Las variables locales son inicializadas a la cadena nula.
  • El cuerpo-de-la-función consiste en sentencias de awk. Es la parte más importante de la definición, porque dice lo que la función debería hacer realmente. Los nombres de argumentos existen para darle al cuerpo una forma de referirse a los argumentos; variables locales, para darle al cuerpo sitios donde guardar valores temporales.

Los nombres de argumentos no se distinguen sintácticamente de los nombres de variables locales; en su lugar, el número de argumentos suministrados cuando se llama a la función determina cuantas variables argumento hay. Por lo que, si se dan tres valores de argumento, los tres primeros nombres en lista-de-parámetros son argumentos, y el resto son variables locales.

Por lo que si el número de argumentos no es el mismo en todas las llamadas que tenga la función, algunos de los nombres en lista-de-parámetros podrían ser argumentos en algunas ocasiones y variables locales en otras ocasiones. Otra forma de enfocar esto es que los argumentos omitidos tienen el valor por defecto de cadenas nulas.

Normalmente cuando escribes una función sabes cuantos nombres tratas de usar como argumentos y cuantos tratas de usar como variables locales. Por convención, deberías escribir un espacio extra entre los argumentos y las variables locales, de forma que otras personas puedan serguir como se supone que se usa la función.

Durante la ejecución del cuerpo de la función, los valores de los argumentos y variables locales esconden cualquier variable del mismo nombre usada en el resto del programa. Las variables que tienen el mismo nombre que las variables locales de la función no son accesibles en la definición de la función, porque no existe ninguna forma de nombrarlas debido a que sus nombres son usados para variables locales. El resto de las variables usadas en el programa awk pueden ser referenciadas o fijadas de forma normal en la definición de la función.

Los argumentos y variables locales permanecen solo mientras se esté ejecutando el cuerpo de la función. Una vez que el cuerpo de la función acaba, las variables del programa principal que se llaman igual que las variables locales de la función se pueden usar de nuevo.

El cuerpo de la función puede contener expresiones con llamadas a funciones. Pueden incluso llamarse a si misma directamente o a través de un función intermedia, a estas funciones se les dice que son recursivas.

No existe la necesidad en awk de poner la definición de la función antes de usarla. Esto se debe a que awk lee el programa completo antes de comenzar a ejecutarlo.






















Publicar un comentario

0 Comentarios