hakeの日記

Windows環境でプログラミングの勉強をしています。

PowerShell - クロージャ

戻り値となるブロック内の変数$cntをscriptスコープ宣言することでfunction内の変数$cntへアクセスできるようになる?

function generator($step = 1){
    $cnt = 0
    return { $script:cnt += $step
            return $cnt
            }.GetNewClosure()
}

$a = generator
&($a)     # 1
&($a)     # 2
&($a)     # 3

$b = generator(2)
&($b)     # 2
&($b)     # 4
&($b)     # 6

&($a)     # 4
&($b)     # 8