PowerShell: передающие блоки как параметры к функциям

Для меня это не имеет отношения об автоматическом коде завершения, соответствие круглой скобке или показ некоторой необычной панели инструмента. Вместо этого это примерно разрешение мне видеть код.

Со всеми панелями, окружающими Вас, область, Вы используете, чтобы на самом деле записать, что код становится слишком маленьким.

В этом случается, Сдвиг + Высокий звук + Входят входит к спасению и получает окно кода в фокусе в полноэкранный режим. Поразите его снова, и у Вас есть все панели назад.

10
задан niton 16 April 2015 в 00:17
поделиться

1 ответ

Да, вы переходите к рекурсии, потому что ссылка $ block в блоке сценария, переданном в функцию B, оценивается в контексте функции B и, как результат, оценивается как значение параметра B $ block .

Если вы не хотите изменять имя параметра (не вините себя), вы можете заставить PowerShell создать новое замыкание в A для захвата значения $ block в функции A, например:

function A($block) 
{    
     B {Write-Host 2; &$block}.GetNewClosure()
}

function B($block) 
{
    Write-Host 1
    &$block
}

A {Write-Host 3}
15
ответ дан 3 December 2019 в 22:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: