Precedente: , Su: Chiamata di una funzione   [Contenuti][Indice]


9.2.3.4 Cose a cui prestare attenzione

Alcune implementazioni di awk consentono di chiamare una funzione che non è stata definita. Viene solo emesso un messaggio che descrive il problema al momento dell’esecuzione, se il programma tenta di chiamare quella funzione. Per esempio:

BEGIN {
    if (0)
        pippo()
    else
        pluto()
}
function pluto() { … }
# si noti che `pippo' non è definito

Poiché la condizione dell’istruzione ‘if’ non risulterà mai verificata in questo caso, non è un problema reale il fatto che che pippo() non sia stato definito. Solitamente, tuttavia, è un problema se un programma chiama una funzione indefinita.

Se si specifica l’opzione --lint (vedi la sezione Opzioni sulla riga di comando), gawk elenca le chiamate a funzioni indefinite.

Alcune implementazione di awk emettono un messaggio di errore se si usa l’istruzione next o nextfile (vedi la sezione L’istruzione next, e vedi la sezione L’istruzione nextfile) all’interno di una funzione definita dall’utente. gawk non ha questa limitazione.

È possibile chiamare una funzione specificando parametri in più rispetto a quelli che la funzione si aspetta, come p.es.:

function pippo(p1, p2)
{
    …
}

BEGIN {
    pippo(1, 2, 3, 4)
}

Fare questo, tuttavia, è una pratica sconsigliata. La funzione chiamata potrebbe fare qualsiasi cosa con i valori ulteriori che le vengono passati, quindi awk calcola le espressioni richieste, per poi non utilizzarle affatto.

È inoltre ancora più importante notare che una simile chiamata di funzione può essere causa di confusione per la persona che potrebbe leggere in seguito il programma in questione.64 I parametri di una funzione sono generalmente elementi dell’input che influenzano l’elaborazione eseguita dalla funzione. Chiamare una funzione con più parametri del necessario potrebbe comunicare la falsa impressione che quei valori siano importanti per la funzione, mentre in realtà non lo sono affatto.

Poiché questa pratica non è affatto raccomandabile, gawk manda sempre un messaggio di avvertimento quando si trova a eseguire una tale chiamata di funzione. (Se non si vuole ricevere il messaggio, occorre modificare il codice! In fondo, non è corretto).


Note a piè di pagina

(64)

Questa persona potresti anche essere tu, dopo qualche tempo, e a quel punto ti domanderesti “cosa stavo pensando?!?”


Precedente: , Su: Chiamata di una funzione   [Contenuti][Indice]