Precedente: , Su: Funzioni definite dall'utente   [Contenuti][Indice]


9.2.5 Funzioni e loro effetti sul tipo di una variabile

awk è un linguaggio molto fluido. È possible che awk non sia in grado di stabilire se un identificativo rappresenta una variabile scalare o un vettore, prima dell’effettiva esecuzione di un programma. Ecco un esempio di programma commentato:

function pippo(a)
{
    a[1] = 1 # il parametro è un vettore
}

BEGIN {
    b = 1
    pippo(b) # non valido: errore fatale, tipi variabile in conflitto

    pippo(x) # x non inizializzato, diventa un vettore dinamicamente
    x = 1    # a questo punto, non permesso: errore in esecuzione
}

In questo esempio, la prima chiamata a pippo() genera un errore fatale, quindi awk non arriverà a segnalare il secondo errore. Se si commenta la prima chiamata e si riesegue il programma, a quel punto awk terminerà con un messaggio relativo al secondo errore. Solitamente queste cose non causano grossi problemi, ma è bene esserne a conoscenza.