Tôi có một mã trong C# sử dụng các biểu thức lambda cho ủy nhiệm truyền vào một phương thức. Làm thế nào tôi có thể đạt được điều này trong PowerShell. Ví dụ sau đây là một mã C#:Biểu thức Lambda trong 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);
Và đây là kịch bản PowerShell mà không lambda-biểu hiện tại chỗ:
$input = "(,)(;)(:)(!)";
$pattern = "\((?<val>[\,\!\;\:])\)";
$r = New-Object System.Text.RegularExpressions.Regex $pattern
$result = $r.Replace($input, "WHAT HERE?")
Write-Host $result
Lưu ý: câu hỏi của tôi không phải là về giải quyết regular- này vấn đề biểu hiện. Tôi chỉ muốn biết cách truyền một biểu thức lambda đến một phương thức nhận các đại biểu trong PowerShell.
Và cảm ơn cũng đã đề cập đến cú pháp 'param ($ m)' bên trong các khối tập lệnh. –
Nếu có ai thích ví dụ thực tế: '$ repo.Deployments.FindOne ({param ($ d) $ d.EnvironmentId -eq $ envId}); ' –