今回は、スクリプトファイルと関数内における変数のスコープについて説明したいと思います。
まずは、下記スクリプトで変数のスコープについてみていきたいと思います。左側の数字は説明上付けた行番号です。
#Scope1.ps1 01 $a = 3 02 03 function Sample1 04 { 05 Write-Host "1)変数`$a=$a" 06 $a = 5 07 Write-Host "2)変数`$a=$a" 08 } 09 10 #関数 sample1を実行 11 Sample1 12 Write-Host "3)変数`$a=$a"
このスクリプトを実行すると結果は下記のようになります。
PS C:\Work> ./Scope1.ps1 1)変数$a=3 2)変数$a=5 3)変数$a=3
この動作について図で解説したいと思います。
まず、このスクリプトの1行目で、変数$aが作成され、3が代入されます。
この変数はスクリプト内で有効です。(1行目から12行目までがこの変数のスコープとなります)
次に、11行目で関数Sample1を呼び出します。
5行目が実行されるわけですが、ここでは1行目に作成した変数$aが参照され"3"を表示します。
次に6行目で変数$aに5を代入していますが、ここでの変数$aは1行目で作成した変数とは別のものとなります。この変数は関数Sample1内でのみ有効で生存期間は6行目から7行目までとなります。これはローカル変数と呼ばれます。
最後に、12行目が実行されるわけですが、ここでの変数$aは1行目で作成した変数$aであるため、結果として"3"が表示されます。
以上のことから
・スクリプトファイル内で作成した変数は、スクリプトファイル内すべてが有効範囲である。
・関数内で作成した変数は、関数内のみが有効範囲である。
・スクリプトファイル内で有効な変数と、関数内で作成した変数が同一名の場合は関数内で作成した変数が優先されるが、スクリプトスコープを持つ変数を上書きしない
ということがわかります。
Theme design by Jelle Druyts
Pick a theme: BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2 BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2
Powered by: newtelligence dasBlog 2.0.7226.0
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.
© Copyright 2009, HIRO
E-mail