Coalescence nulle dans PowerShell
Source : Stack Overflow [powershell]
PowerShell 7+
PowerShell 7 introduit nativement les operateurs de coalescence nulle, d’affectation conditionnelle nulle et ternaire dans PowerShell.
Coalescence nulle
$null ?? 100 # Le resultat est 100
"Evaluated" ?? (Expensive-Operation "Not Evaluated") # Le cote droit ici n'est pas evalue
Affectation conditionnelle nulle
$x = $null
$x ??= 100 # $x vaut maintenant 100
$x ??= 200 # $x reste 100
Operateur ternaire
$true ? "cette valeur est retournee" : "cette expression n'est pas evaluee"
$false ? "cette expression n'est pas evaluee" : "cette valeur est retournee"
Versions precedentes :
Pas besoin des PowerShell Community Extensions, vous pouvez utiliser les instructions if standard de PowerShell comme expression :
variable = if (condition) { expr1 } else { expr2 }
Donc les remplacements de votre premiere expression C# :
var s = myval ?? "new value";
deviennent l’un des suivants (selon la preference) :
$s = if ($myval -eq $null) { "new value" } else { $myval }
$s = if ($myval -ne $null) { $myval } else { "new value" }
ou selon ce que $myval pourrait contenir, vous pouvez utiliser :
$s = if ($myval) { $myval } else { "new value" }
et la seconde expression C# se transpose de maniere similaire :
var x = myval == null ? "" : otherval;
devient
$x = if ($myval -eq $null) { "" } else { $otherval }
Maintenant, pour etre honnete, ce n’est pas tres concis, et loin d’etre aussi confortable a utiliser que les formes C#.
Vous pourriez egalement envisager de l’encapsuler dans une fonction tres simple pour rendre les choses plus lisibles :
function Coalesce($a, $b) { if ($a -ne $null) { $a } else { $b } }
$s = Coalesce $myval "new value"
ou eventuellement sous la forme IfNull :
function IfNull($a, $b, $c) { if ($a -eq $null) { $b } else { $c } }
$s = IfNull $myval "new value" $myval
$x = IfNull $myval "" $otherval
Comme vous pouvez le voir, une tres
(Reponse tronquee)