Ho un codice in C# che utilizza espressioni lambda per il passaggio delegato a un metodo. Come posso ottenerlo in PowerShell. Ad esempio, il seguente è un codice C#:Espressione lambda in PowerShell
string input = "(,)(;)(:)(!)";
string pattern = @"\((?<val>[\,\!\;\:])\)";
var r = new Regex(pattern);
string result = r.Replace(input, m =>
{
if (m.Groups["val"].Value == ";") return "[1]";
else return "[0]";
});
Console.WriteLine(result);
E questo è lo script PowerShell senza il lambda-espressione in atto:
$input = "(,)(;)(:)(!)";
$pattern = "\((?<val>[\,\!\;\:])\)";
$r = New-Object System.Text.RegularExpressions.Regex $pattern
$result = $r.Replace($input, "WHAT HERE?")
Write-Host $result
Nota: la mia domanda non è di risolvere questo regolarizzazione problema di espressione. Voglio solo sapere come passare un'espressione lambda a un metodo che riceve i delegati in PowerShell.
E grazie anche per aver menzionato la sintassi 'param ($ m)' all'interno dei blocchi di script. –
Se qualcuno desidera un esempio reale: '$ repo.Deployments.FindOne ({param ($ d) $ d.EnvironmentId -eq $ envId});' –