2011年4月5日火曜日

◆スコープ3(Set-Variable)

またまたスコープ。
以前の、PowerShell: ◆スコープPowerShell: ◆スコープ2の補足。

PowerShell: ◆スコープ2ではfunction内からスクリプトスコープの変数に値を設定するのに$script:変数名を使ったがSet-Variableコマンドレットを使っても可能なようだ。

001
002
003
004
005
006
007
008
009

$a = 1
function fncA{
$a
Set-Variable -Name a -Value ($a+2) -Scope 1
$script:a = $a + 3
$a
}
fncA
$a

-Scopeパラメータに0を指定すると現在のスコープ、1を指定すると一つ上(親)のスコープに値が設定できる。

image

ちなみに、このスコープを2にしてこのまま実行すると2つ上の親は居ないのでエラーになるが、コマンドラインからこのスクリプトを呼び出すとこうなる。

image

この時コマンドラインから$aを表示するとグローバルスコープの値3が表示される。

最初の例に戻って3行目の$a を $a = 1 に変えてみる。
結果は想像つくだろうか。

試してみるとこうなる。

image

なんとなくPowershellばかり普段使っていると若干違和感のある結果だが、1行目と3行目はC#で書けば、 int a = 1;  だと再認識すれば当たり前の結果だと判る。

0 件のコメント:

コメントを投稿