見出し画像

[Lotus Script]変数のスコープ(影響範囲)

はじめに

 多くのコードでは、変数を使う機会が多いです。長いコードのどこか2か所で同名の変数を定義してしまったとしたら、いったいどうなってしまうのでしょうか。ちょっと考えてみましょう。

(Declarations)で宣言したもの

 変数をコードの『(Declarations)』で定義するか、関数やクラスの外で定義すると、コードの全体で使えるグローバル変数になります。
 次のコードは、『(Declarations)』で定義して、『関数』で値を設定した『変数』という名前の変数です。

(Declarations)
Dim 変数 As String

Sub 関数 (Source As Button)
	変数 = "値" ' ← (Declarations) で宣言されたグローバル変数を扱う
	Print 変数
End Sub

関数内で宣言したもの

 では、関数やクラスの中で同名の変数を定義してしまったらどうなるでしょうか。ヘルプには『最も深いスコープで宣言された変数やプロシージャを参照すると解釈します。外側の名前の宣言は隠されて、内側の宣言からは見えません』と書かれています。
 次のコードのように、『(Declarations)』と『関数』の両方で定義すると、『関数』の中では『関数』で定義したローカル変数にアクセスできます。このばあい、『(Declarations)』で定義した『変数』グローバル変数にはアクセスできなくなります。

(Declarations)
Dim 変数 As String

Sub 関数 (変数 As Button) ' ローカルの『変数』を宣言
	変数 = "A" ' ひとつ上の行で宣言されたローカルの変数
	Print 変数
End Sub

クラスで内で宣言したもの

 クラスを使ったときはどうなるでしょうか。『(Declarations)』『クラス』と『関数』の3か所で同じ名前の変数を定義できます。

ここから先は

434字

¥ 110

サポートいただければ、記事をもっと充実することができます