Как указать функцию по умолчанию для параметра scriptblock в функции PowerShell?

Учитывая эти функции powershell, где foo принимает блок скриптов в качестве параметра:

function bar($name)
{
    "Hello World $name"
}

function foo([scriptblock]$fun={})
{
    &$fun "Bart"
}

Можно ли указать функциональную панель по умолчанию для $fun вместо {} в функции foo?

1 ответ

Решение

Да, это возможно. Например, этот способ работает для передачи функции в:

foo ((get-command bar).scriptblock)

В вашем случае это печатает

Hello World Bart

Таким образом, чтобы использовать его в качестве параметра по умолчанию:

function foo([scriptblock]$fun=(get-command bar).scriptblock)
{
    &$fun "Bart"
}

Сейчас просто звоню

foo

получает тот же результат.

Другие вопросы по тегам