2009-03-26 15 views
6

द्वारा संदर्भित फ़ंक्शन में तर्कों को कैसे पास किया जाए मेरे पास एक फ़ंक्शन 'foo' है और इसे संदर्भित करने वाला एक चर '$ foo' है।वेरिएबल

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

$foo = foo 
$foo 

मैं बिना तर्क के $ foo कॉल कर सकता हूं, लेकिन मैं पैरामीटर कैसे पास कर सकता हूं? यह काम नहीं करता:

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

bar(foo) 

उत्तर

9

समस्या जब आप

$ foo करना = आप चर $ foo में समारोह का परिणाम डाल है foo

, समारोह ही नहीं!

इस प्रयास करें:

$ foo = get-सामग्री फंक्शन: \ foo

और यह इस

& $ foo 5

की तरह फोन आशा करता हूँ की ये काम करेगा !

1

संपादित Misread सवाल पहली बार

आपको क्या करने की जरूरत है का उपयोग & है:

$foo 5 
$foo(5) 

असल लक्ष्य इस तरह के कोड लिखने के लिए है ऑपरेटर

& $foo 5 
+0

वास्तव में आप इसे पढ़ने में भूलना नहीं था, मैं सिर्फ सवाल अद्यतन और अधिक स्पष्ट :-) Btw, अपने समाधान अभी भी काम नहीं करता है होना करने के लिए ... – alex2k8

3

स्क्रिप्ट ब्लॉक का उपयोग करें।

# f.ps1 

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

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

bar($foo) 

यह चल रहा है:

> ./f.ps1 
10 
संबंधित मुद्दे