2009-03-26 9 views
6

J'ai une fonction 'foo' et une variable '$ foo' la référençant.Comment passer les arguments à la fonction référencée par la variable

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

$foo = foo 
$foo 

Je peux appeler $ foo sans arguments, mais comment puis-je transmettre des paramètres? Cela ne fonctionne pas:

$foo 5 
$foo(5) 

En fait, le but est d'écrire ce code:

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

bar(foo) 

Répondre

9

Le problème est quand vous faites

$ foo = foo

Vous mettez le résultat de la fonction dans la variable $ foo, pas la fonction elle-même!

Essayez ceci:

$ foo = get-content Fonction: \ foo

Et appeler comme ça

& $ foo 5

J'espère que cela aide !

1

EDIT Misread la question la première fois

Ce que vous devez faire est d'utiliser le & opérateur

& $foo 5 
+0

En fait, vous n'avez pas mal lu, je viens de la question mis à jour plus clair :-) BTW, votre solution ne fonctionne toujours pas ... – alex2k8

0

$ foo = foo 5

3

Utilisez un bloc de script.

# f.ps1 

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

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

bar($foo) 

Son exécution:

> ./f.ps1 
10 
Questions connexes