Semplificare la logica condizionale con gli operatori ternari di PowerShell

La costruzione if/then è comune nel codice PowerShell, ma sai che c’è un altro modo chiamato operatore ternario che ti permette di rendere le tue costruzioni if/then molto più concise? Impariamo come creare un operatore ternario personalizzato in PowerShell.

A scapito della leggibilità, alcuni dicono che l’operatore ternario costruisce una logica condizionale più concisa, più semplice e con meno codice. Hanno ragione, ma è così bello avere quel comportamento simile a un ternario in PowerShell!

Se non sei familiare con un operatore ternario, fondamentalmente si utilizza una hashtable o una struttura simile per prendere una decisione condizionale basata su un criterio.

If/Then in PowerShell

Per spiegare l’operatore ternario di PowerShell, cominciamo con un esempio di una costruzione if/then.

$CarColor = 'Blue'
if ($CarColor -eq 'Blue') {
    'The car color is blue'
} else {
    'The car color is not blue'
}

A prima vista, potresti non pensare che ci sia qualcosa di sbagliato. Infatti, non c’è davvero nulla di sbagliato, ma questa condizione potrebbe essere testata altrettanto facilmente con una singola riga (sotto il mio limite personale di 115 caratteri).

Ora crea una hashtable PowerShell con due chiavi: $true e $false. Quindi, fai in modo che i valori siano ciò che desideri visualizzare se viene soddisfatta una condizione che tu definisci.

@{ $true = 'The car color is blue'; $false = 'The car color is not blue' }
[$CarColor -eq 'Blue']

In seguito, definisci la condizione ($CarColor è Blue) e controlla se quella condizione è soddisfatta con $CarColor -eq 'Blue'.

$CarColor = 'Blue'
@{ $true = 'The car color is blue'; $false = 'The car color is not blue'}
$CarColor -eq 'Blue'

Ora utilizza la condizione ($CarColor -eq 'Blue') come chiave in quel hashtable. In questo modo viene eseguito il controllo e poi viene utilizzato il risultato per cercare la chiave nell’hashtable.

Completando l’operatore ternario di PowerShell

$CarColor = 'Blue'
@{ $true = 'The car color is blue'; $false = 'The car color is not blue'}[$CarColor -eq 'Blue']
A custom PowerShell ternary operator

Una riga! Non è molto più succinto? Invece di utilizzare una dichiarazione if/then sto utilizzando un hashtable e sto effettuando una ricerca in base a se $CarColor è uguale a Blue o meno. L’indice risultante viene quindi visualizzato sulla console. Se desideri utilizzare questo metodo, è semplice come riempire questi spazi vuoti:

@{$true = $ResultyouwanttodoifTrue; $false = $ResultyouwantifFalse}[]

Potresti anche includere più di $true e $false se desideri. Potresti aggiungere qualsiasi numero di condizioni nell’hashtable e verificarle. È un modo semplice per sostituire lunghe dichiarazioni if/then o switch.

Ora hai un operatore ternario personalizzato di PowerShell che puoi iniziare a utilizzare nei tuoi script oggi stesso!

Source:
https://adamtheautomator.com/powershell-ternary/