Как передать аргументы в функцию, на которую ссылается переменная - PullRequest
6 голосов
/ 26 марта 2009

У меня есть функция 'foo' и переменная '$ foo', ссылающаяся на нее.

function foo
{
    param($value)
    $value + 5
}

$foo = foo
$foo

Я могу назвать $ foo без аргументов, но как я могу передать параметры? Это не работает:

$foo 5
$foo(5)

На самом деле цель - написать такой код:

function bar {
  param($callback)
  $callback 5
}

bar(foo)

Ответы [ 4 ]

9 голосов
/ 26 марта 2009

Проблема в том, когда вы делаете

$ foo = foo

Вы помещаете результат функции в переменную $ foo, а не саму функцию!

Попробуйте это:

$ foo = get-content Функция: \ foo

И назовите это так

& $ foo 5

Надеюсь, это поможет!

3 голосов
/ 26 марта 2009

Использовать блок скрипта.

# f.ps1

$foo = 
{
    param($value)
    $value + 5
}

function bar 
{
  param($callback)
  & $callback 5
}

bar($foo)

Запуск:

> ./f.ps1
10
1 голос
/ 26 марта 2009

РЕДАКТИРОВАТЬ В первый раз неправильно прочитал вопрос

Вам нужно использовать оператор &

& $foo 5
0 голосов
/ 26 марта 2009

$ foo = foo 5

...