2009-03-26 24 views
6

Tôi có hàm 'foo' và biến '$ foo' tham chiếu nó.Cách chuyển đối số cho hàm được tham chiếu theo biến

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

$foo = foo 
$foo 

Tôi có thể gọi $ foo không có arg, nhưng làm cách nào tôi có thể chuyển tham số? Điều này không làm việc:

$foo 5 
$foo(5) 

Thực ra mục tiêu là để viết mã như:

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

bar(foo) 

Trả lời

9

Sự cố là khi bạn làm

$ foo = foo

Bạn đặt kết quả của hàm trong $ foo biến, không phải là chức năng riêng của mình!

Hãy thử điều này:

$ foo = get-content Chức năng: \ foo

Và gọi nó như thế này

& $ foo 5

Hy vọng nó giúp !

1

EDIT misread câu hỏi lần đầu tiên

Những gì bạn cần làm là sử dụng & nhà điều hành

& $foo 5 
+0

Trên thực tế bạn không đọc nhầm nó, tôi chỉ cập nhật các câu hỏi để có nhiều :-) rõ ràng Btw, giải pháp của bạn vẫn không hoạt động ... – alex2k8

0

$ foo = foo 5

3

Sử dụng khối tập lệnh.

# f.ps1 

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

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

bar($foo) 

Chạy nó:

> ./f.ps1 
10 
Các vấn đề liên quan