2009-03-26 13 views
6

Tengo una función 'foo' y una variable '$ foo' haciendo referencia a ella.Cómo pasar argumentos a la función referenciada por la variable

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

$foo = foo 
$foo 

puedo llamar a $ foo sin argumentos, pero ¿cómo se puede pasar parámetros I? Esto no funciona:

$foo 5 
$foo(5) 

En realidad, el objetivo es escribir dicho código:

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

bar(foo) 

Respuesta

9

El problema es cuando se hace

$ foo = foo

Se pone el resultado de la función en la variable $ foo, no la función en sí!

Prueba esto:

$ foo = Get-Content Función: \ foo

y llamarlo como esto

& $ foo 5

Espero eso ayude !

1

EDITAR Misread la pregunta primera vez

Lo que hay que hacer es usar el & operador

& $foo 5 
+0

En realidad, usted no interpretan mal, me acaba de actualizar la cuestión de ser más claro :-) Por cierto, la solución sigue sin funcionar ... – alex2k8

0

$ foo = foo 5

3

Utilice un bloque de secuencia de comandos.

# f.ps1 

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

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

bar($foo) 

Ejecutarlo:

> ./f.ps1 
10 
Cuestiones relacionadas