我在C#中有一個代碼,它使用lambda表達式將委託傳遞給一個方法。我如何在PowerShell中實現這一點。例如,下面是一個C#代碼:Powershell中的Lambda表達式
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);
這是不到位的λ-表達的PowerShell腳本:
$input = "(,)(;)(:)(!)";
$pattern = "\((?<val>[\,\!\;\:])\)";
$r = New-Object System.Text.RegularExpressions.Regex $pattern
$result = $r.Replace($input, "WHAT HERE?")
Write-Host $result
注:我的問題是不是解決這個regular-表達問題。我只想知道如何將一個lambda表達式傳遞給在PowerShell中接收委託的方法。
而且還要感謝在腳本塊中提到'param($ m)'語法。 –
如果有人想要一個真正的例子:'$ repo.Deployments.FindOne({param($ d)$ d.EnvironmentId -eq $ envId});' –