dstarcev
@dstarcev
в основном, программист

Как сделать замыкание на функцию в PowerShell по аналогии с JavaScript?

Начал изучать PowerShell. Пытаюсь вернуть из блока функцию, которая замыкается на другую функцию вот так:

$myFunction = Invoke-Command -ScriptBlock {
    function Bar {
        Write-Host World
    }

    function Foo {
        Write-Host Hello
        Bar
    }

    return ${function:Foo}
}

. $myFunction

В ответ получаю:
Hello
foreach : The term 'Bar' is not recognized as the name of a cmdlet, function, script file, or operable program.

Хочу получить:
Hello
World


При этом не хочу раскрывать функцию Bar в глобальную область видимости. Как в PowerShell сделать это?
  • Вопрос задан
  • 2554 просмотра
Пригласить эксперта
Ответы на вопрос 1
@FlyingBrick
У меня получилось так:

$myFunction = Invoke-Command -ScriptBlock {
    function Bar
    {
        Write-Host("World")
    }

    function Foo
    {
        Write-Host("Hello"); 
        Bar
    }

return Foo

}

$myFunction


Консоль написала:

PS C:\Users\%username%> C:\Users\%username%\Desktop\Untitled2.ps1
Hello
World
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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