Successivo: Istruzione break, Precedente: Istruzione for, Su: Istruzioni [Contenuti][Indice]
switch
Questa
sezione descrive una funzionalità disponibile solo in
gawk
.
Se gawk
è in modalità compatibile (vedi la sezione Opzioni sulla riga di comando),
la funzionalità non è disponibile.
L’istruzione switch
consente di valutare un’espressione e di
eseguire istruzioni se il valore trovato corrisponde a uno dei case
[casi] previsti.
Le istruzioni case
sono esaminate per cercare una corrispondenza
nell’ordine in cui i casi sono definiti nel programma. Se nessuno dei case
corrisponde al valore dell’espressione, viene eseguita la sezione
default
, se è stata specificata.
Ogni case
contiene una singola costante, che può essere un numero,
una stringa, o
una regexp. Viene valutata l’espressione switch
, e poi la
costante di ogni case
viene confrontata
di volta in volta con il valore risultante.
Il tipo di costante determina quale sarà il confronto: per i tipi numerici o
stringa si seguono le regole abituali. Per una costante regexp viene
effettuato un confronto tra l’espressione e il valore di tipo stringa
dell’espressione originale.
Il formato generale dell’istruzione switch
è simile a questo:
switch (espressione) { case valore o espressione regolare: corpo-del-caso default: corpo-del-default }
Il flusso di controllo
dell’istruzione switch
funziona come per il linguaggio C. Una volta
stabilita una corrispondenza con un dato caso, le istruzione che formano il
corpo del caso sono eseguite, fino a che non venga trovata un’istruzione
break
,
continue
, next
, nextfile
o exit
,
o fino alla fine dell’istruzione switch
medesima. Per esempio:
while ((c = getopt(ARGC, ARGV, "aksx")) != -1) { switch (c) { case "a": # stampa la dimensione di tutti i file all_files = TRUE; break case "k": BLOCK_SIZE = 1024 # in blocchi da 1 Kbyte break case "s": # fa solo le somme sum_only = TRUE break case "x": # non esce dal filesystem fts_flags = or(fts_flags, FTS_XDEV) break case "?": default: uso() break } }
Si noti che se nessuna delle istruzioni specificate qui arresta l’esecuzione
di un’istruzione case
per la quale è stata trovata una corrispondenza;
l’esecuzione continua fino al successivo case
finché
non viene interrotta. In questo esempio, il
case
per "?"
esegue quello di default
, che consiste nel
chiamare una funzione di nome uso()
.
(La funzione getopt()
qui chiamata è descritta in
Elaborare opzioni specificate sulla riga di comando.)
Successivo: Istruzione break, Precedente: Istruzione for, Su: Istruzioni [Contenuti][Indice]