2010年2月7日日曜日

PowerShellの変数のスコープ、その1

これまでの言語と違うようなので、
回数を多めにとってまとめておきます。

変数のスコープというと、C言語とかJavaだと、
for文とかif文の「{ }」内外で変数のスコープが変わるので云々、
ということでコード作成時に注意する必要がありました。
C言語の例は、こちらのサイトをご覧ください。

PowerShellの場合は、上記のような通常の制御構文の内外で、
変数のスコープが変わることはありません。
したがって、たとえばforループ内で宣言した変数を、
ループの外から普通に使用できたりもします。

作成例(制御構文とローカル変数の関係確認スクリプト):
#変数を消しておく
Remove-Variable  -Name a, b
[string]$a = "A"
if ( $true ) {
    $a = "a"
    $b = "b"
}
Write-Host ( '$a[{0}], $b[{1}]' -f $a, $b ) 
#出力 → $a[a], $b[b_inside_if]

for ( $counter = 0; $counter -lt 10; $counter++ ) {
    $a += $counter.ToString() 
    $c += $counter.ToString()
}
Write-Host ( '$a[{0}], $c:{1}' -f $a, $c )
#出力 → $a[a0123456789], $c[0123456789]


では、PowerShellにおけるスコープとは何ぞや、という事ですが、
実はスクリプトブロックや関数の間で、
どの変数が見えて、どの変数が見えないか、
という事を表現するための概念のようですが…
これについては、次回以降のエントリーで書きます。

参考サイト:
P's Members : スコープってなに?

参考コマンド:
Get-Help about_Scope

修正履歴:

0 件のコメント: