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 "Questa riga viene stampata, 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 la sezione Opzioni sulla riga di comando),
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 la sezione Funzioni di manipolazione di 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]