Mam kod w języku C#, który używa wyrażeń lambda dla przekazania przekazania do metody. Jak mogę to osiągnąć w PowerShell? Na przykład po to kod C#:Wyrażenie Lambda w 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);
I to jest skrypt PowerShell bez lambda wyrażenia w lokalu:
$input = "(,)(;)(:)(!)";
$pattern = "\((?<val>[\,\!\;\:])\)";
$r = New-Object System.Text.RegularExpressions.Regex $pattern
$result = $r.Replace($input, "WHAT HERE?")
Write-Host $result
Uwaga: moje pytanie nie jest o rozwiązaniu tego regular- problem z ekspresją. Po prostu chcę wiedzieć, jak przekazać wyrażenie lambda do metody, która otrzymuje delegatów w PowerShell.
Dziękuję również za wspomnienie składni "param ($ m)" wewnątrz bloków skryptu. –
Jeśli ktoś chciałby prawdziwego przykładu: '$ repo.Deployments.FindOne ({param ($ d) $ d.EnvironmentId -eq $ envId});' –