next up previous contents
Next: 8.4 ブロックスコープルール Up: 8. 変数/関数のライフタイムとスコープ Previous: 8.2 制御式と変数/関数宣言

8.3 変数/関数のスコープ

関数の中で宣言された関数または変数は、その関数の中からのみ アクセスできます。


// トップレベル

var a = 10, b = 20, c = 30 ;

func func2 () {
println ("Hello") ;
}

func func1 () {
// この時点では a, b, c ともトップレベルの a, b c を参照することになる。
println (a," ",b," ",c) // この出力結果は 10 20 30 となる

var a = 100 ;
// この時点から、a は、func1 で定義された a が 参照されるようになる。
// func2 は、トップレベルで定義された関数を参照することになる。

println (a," ",b," ",c) // この出力結果は 100 20 30 となる

func func2 () {
println (a," ",b," ",c) // この出力結果は 100 20 30 となる
var b = 200 ;
// ここでは、b は func2 で定義された b を、a は、func1 で定義された b を
// c は、トップレベルの c を参照することになる。
println (a," ",b," ",c) // この出力結果は 100 200 30 となる
var b = 2000 ;
// b が再び定義しなおされた。
println (a," ",b," ",c) // この出力結果は 100 2000 30 となる
}

// この時点では、再び、func1 のスコープになる
println (a," ",b," ",c) // この出力結果は 100 20 30

// func2 は、func1 の中で宣言されている func2 となる。
func2 () ;
}
// この時点では、トップレベルのスコープになる。
println (a," ",b," ",c) // この出力結果は 10 20 30
func2 (); // これは、トップレベルの func2 を参照


next up previous contents
Next: 8.4 ブロックスコープルール Up: 8. 変数/関数のライフタイムとスコープ Previous: 8.2 制御式と変数/関数宣言
Tetsuo Ono
1998-11-05