2009-12-02 14 views

cevap

4

bir işlevlerine oluşturabilir Bu bir betik alır, GetNewClosure çağırır ve kapatır. Nokta operatörünü ör .:

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

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

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

A {Write-Host 3} 

bu sadece olsa scriptblock üzerinde GetNewClosure() çağırarak daha iyidir emin değil kullanarak bu işlevi çağırmak esastır. Fonksiyon için başka bir isim seçebilirsiniz. Daha çok C# lambdas gibi bir şey için gidiyordum.

+0

Thx. Neden işlevi çağırmak için nokta operatörü kullanmalıyım? (Aynı bağlamı almak için?) –

+1

Evet, böylece işlev çağrılan aynı kapsamda yürütülür. –

+5

Keith, bruce ve jeffrey'i daha doğal bir sözdizimi ile bulmamız gerekiyor. GetNewClosure() yönteminden nefret ediyorum. Çok beceriksiz. Çift parantez kullanmayı mı düşünüyordum: {{$ ix}}? – x0n

İlgili konular