2009-12-02 33 views

Trả lời

4

Bạn có thể tạo một functi trên đó có một kịch bản, gọi GetNewClosure và trả về việc đóng cửa. Điều quan trọng là bạn gọi hàm này bằng cách sử dụng toán tử dấu chấm, ví dụ:

function =>([scriptblock]$_sb_) 
{ 
    $_sb_.GetNewClosure() 
} 

function A($block) 
{ 
    B (. => {Write-Host 2; &$block}) 
} 

function B($block) {Write-Host 1;&$block} 

A {Write-Host 3} 

Không chắc chắn điều này tốt hơn nhiều so với việc chỉ gọi GetNewClosure() trên tập lệnh chặn. Lưu ý bạn có thể chọn một số tên khác cho hàm. Tôi đã đi cho một cái gì đó giống như C# lambdas.

+0

Thx. Tại sao tôi cần sử dụng toán tử dấu chấm để gọi hàm? (Để có được bối cảnh tương tự?) –

+1

Có, do đó, chức năng thực hiện trong phạm vi tương tự nó được gọi là từ. –

+5

Keith, chúng tôi thực sự cần phải đánh bại bruce và jeffrey để đưa ra một cú pháp tự nhiên hơn. Tôi ghét phương thức GetNewClosure(). Nó rất vụng về. Tôi đã nghĩ đến việc sử dụng dấu ngoặc kép: {{$ ix}}? – x0n

Các vấn đề liên quan