Ich werde meine Frage an einem Beispiel erläutern. Lassen Sie uns folgenden Code in C#:PowerShell: Blöcke als Parameter an Funktionen übergeben
void A(Action block)
{
B(() =>
{
Console.WriteLine(2);
block();
});
}
void B(Action block)
{
Console.WriteLine(1);
block();
}
void Main()
{
A(() =>
{
Console.WriteLine(3);
});
}
Der Ausgang dieses Codes ist:
1
2
3
Nun, ich diesen Code in Powershell schreiben möchten:
function A($block) {
B {
2
. $block
}
}
function B($block) {
1
. $block
}
A {
3
}
jedoch dieser Code verursacht einen Anruf Tiefe Überlauf:
Das Skript fehlgeschlagen du e zum Anruf Tiefe Überlauf. Der Anruf erreichte Tiefe 1001 und das Maximum ist 1000.
ich gefunden, wenn ich den Namen des Parameters der Funktion B zu ändern, wird es funktionieren.
Ist es eine Funktion oder ein Fehler (oder beides)? Wie kann ich das in PowerShell durchführen, ohne Parameter zu haben, die über Funktionen hinweg einzigartig sind?
Thx. Gibt es eine Standardverknüpfung zum Erstellen von Schließungen aus Blöcken (z. B. $ {})? –
Nein. Nur die GetNewClosure() -Methode ist mir bekannt. –
Keith Hill du bist mein Held! – bwerks