Successivo: Istruzione break, Precedente: Istruzione for, Su: Istruzioni [Contenuti][Indice]
switchQuesta
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]