07/09/2010

Il blocco switch

A cura di Efran Cobisi


Pagina 1 di 3

In questo articolo, tratto dal capitolo 7 del libro Windows PowerShell 2.0 - Guida completa, di Efran Cobisi, si analizzano le caratteristiche più interessanti ed utili del blocco switch, fornendo dei brevi ma completi esempi d'uso.


Il blocco switch permette di verificare il valore di una particolare espressione a fronte di una lista di possibilità predefinite dall'utente ed eseguire l'insieme di istruzioni corrispondente.
Nonostante questo blocco condizionale abbia una semantica e una sintassi molto simili ai blocchi omonimi presenti nei linguaggi di derivazione C, PowerShell ne offre una variante ricca di funzionalità innovative.

Un’istruzione switch di base prevede l’impiego della relativa keyword e l’indicazione dell’espressione da verificare, seguita dalla lista delle condizioni da testare, caso per caso, cui sono associati i blocchi di codice da eseguire nel caso in cui le relative condizioni siano soddisfatte.
Nell’utilizzo più semplice, un blocco di questo tipo risulta quindi equivalente a una serie di istruzioni if, una di seguito all’altra, dove l’operando di sinistra è in comune tra tutte e ogni condizione è un confronto di uguaglianza rispetto a un’altra particolare espressione.

La sintassi di base del blocco switch è la seguente:

switch (<espressione>) {
	<valore> { <elenco comandi> }
	<valore> { <elenco comandi> }
	<valore> { <elenco comandi> }
	...
}

Nello script che segue, per esempio, la shell visualizza a video un messaggio in base all’ora corrente:

$hour = (Get-Date).Hour
switch ($hour) {
	12 { Write-Host 'Ora di pranzo' }
	20 { Write-Host 'Ora di cena' }
}

Così come avviene per gli operatori di confronto, anche nel caso di switch il paragone tra l’espressione da verificare e quella dei diversi casi avviene facendo il cast di questi ultimi verso il tipo della prima. Lo script che segue, pertanto, è perfettamente lecito (anche se non porta ad alcun risultato):

$test = 619
switch ($test) {
	235.2 { Write-Host 'Un numero in virgola mobile' }
	(Get-Date) { Write-Host 'Una data' }
	'xyz' { Write-Host 'Una stringa' }
}

Là dove il cast non è possibile, d’altra parte, la shell considera la condizione non soddisfatta e prosegue con l’analisi delle condizioni successive, senza generare alcun errore.

Pagina 1 di 3

Commenti



Nessun commento disponibile.

EmailVerify.NET is a Microsoft .NET software component that validates e-mail addresses. valid email