Successivo: Vettori multidimensionali, Precedente: Indici non inizializzati, Su: Vettori [Contenuti][Indice]
delete
Per rimuovere un singolo elemento da un vettore si usa l’istruzione
delete
:
delete vettore[espressione-indice]
Una volta che un elemento di un vettore è stato eliminato, il valore che aveva quell’elemento non è più disponibile. È come se quell’elemento non sia mai stato referenziato oppure come se non gli sia mai stato assegnato un valore. Il seguente è un esempio di eliminazione di elementi da un vettore:
for (i in frequenze) delete frequenze[i]
Quest’esempio rimuove tutti gli elementi dal vettore frequenze
. Una
volta che un elemento è stato eliminato, una successiva istruzione for
che visiti il vettore non troverà quell’elemento, e l’uso dell’operatore
in
per controllare la presenza di quell’elemento restituisce zero (cioè
falso):
delete pippo[4] if (4 in pippo) print "Questo non verrà mai stampato"
È importante notare che eliminare un elemento non è la stessa cosa
che assegnargli un valore nullo (la stringa vuota, ""
).
Per esempio:
pippo[4] = "" if (4 in pippo) print "Questo viene stampato, anche se pippo[4] è vuoto"
Non è un errore eliminare un elemento che non esiste.
Tuttavia, se viene data l’opzione --lint sulla riga di comando
(vedi Opzioni),
gawk
emette un messaggio di avvertimento quando viene eliminato un
elemento che non è presente in un vettore.
Tutti gli elementi di un vettore possono essere eliminati con una singola
istruzione omettendo l’indice nell’istruzione delete
,
in questo modo:
delete vettore
L’uso di questa versione dell’istruzione delete
è circa tre volte più
efficiente dell’equivalente ciclo che elimina gli elementi uno
alla volta.
Questa forma dell’istruzione delete
è ammessa anche
da BWK awk
e da mawk
, e anche da
diverse altre implementazioni.
NOTA: Per molti anni, l’uso di
delete
senza un indice era un’estensione comune. A settembre 2012 si è deciso di includerla nello standard POSIX. Si veda il sito dell’Austin Group.
La seguente istruzione fornisce un modo portabile, anche se non evidente, per svuotare un vettore:43
split("", vettore)
La funzione split()
(vedi Funzioni per stringhe)
dapprima svuota il vettore indicato. La chiamata chiede di dividere
la stringa nulla. Poiché non c’è nulla da dividere, la
funzione si limita a svuotare il vettore e poi termina.
ATTENZIONE: L’eliminazione di tutti gli elementi di un vettore non cambia il suo tipo; non si può svuotare un vettore e poi usare il nome del vettore come scalare (cioè, come una variabile semplice). Per esempio, questo non è consentito:
a[1] = 3 delete a a = 3
Successivo: Vettori multidimensionali, Precedente: Indici non inizializzati, Su: Vettori [Contenuti][Indice]