$gv=9686 $funcs = @( { echo "GlobalOnRead" $lv = $gv Write-Output $lv } , { echo "CopyOnWrite" $lv = $gv $lv += 5050 - 9686 Write-Output $lv } , { echo "LocalOnWrite" $lv = $gv $gv += 5050 - 9686 Write-Output ([String]$lv + ":" + $gv) } ) for($i = 0; $i -lt $funcs.length; $i++) { Write-Output $funcs[$i].invoke() }結果 GlobalOnRead 9686 CopyOnWrite 5050 LocalOnWrite 9686:-4636 PowerShellでのグローバル変数は参照のみ。 変数の値を書き込むやいなや、ローカル変数扱いとなる。 Pythonだとブロック内に書き込むロジックがある時点で ブロックの最初が参照だったらコンパイルエラーになった気がする。 もちろん、配列メンバへの更新はグローバル変数扱い! PR |
| ホーム |
忍者ブログ [PR] |