今回の記事はスコープについて
アクセス修飾子についての記事も関係してきます。
基本的にはどの言語にも共通するお話かと思いますので、今回は言語の指定はしてないです。
スコープとは
スコープとは、変数の有効範囲のことを表します。
「クラスやメソッドの外で使える変数かどうか」ということです。
冒頭のリンクの記事ではpublicキーワードやprivateキーワードなどについて取り扱われていますが、まさにそこの部分も関係してきます。
また、どこで変数を宣言するかによっても変わってきます。こんな感じ↓
- メソッド外で変数を宣言した場合はメソッド外でも使用可(アクセス修飾子でいうとpublic)
- メソッド内で変数を宣言した場合はメソッド外では使用不可(アクセス修飾子でいうとprivate)
というのが一般的なスコープです。
例外(?)として、メソッド内でpublicキーワードを使用して変数を宣言した場合は、メソッド外でも値は保持された状態で使用可能となります。(VBAでは可能でした)
アクセス修飾子ってこういうことですね。
この「値が保持された状態」についてですが、基本的に同じ変数名を扱う場合は最後に格納した値を持っています。
その変数のスコープの適用範囲内であれば、最後に格納された値で保持される。といった感じでしょうか。
僕自身、この辺は理解できているのですが説明の仕方が難しいのでこれが届いているかどうか…
ゲームで例えると、こんな感じです。
- タイトル画面はpublic状態
- ロードデータの選択画面もpublic状態
- ロードされたデータはprivateになり、他のデータとの干渉は起きない
みたいな感じですかね…
実際にロードされたデータでプレイする時には、他のセーブデータとは基本的には全く関係ないはずです。
んー、伝わるかな、難しいな笑
ちなみに変数を宣言する前に変数を使用することは論外です。
ソースコードは上から順番に実行されるものなので、変数宣言よりも先に変数を使用するのは変じゃないです?
プログラミングの世界では、public変数を「グローバル変数」、private変数は「ローカル変数」と呼ばれたりしています。
とりあえず、今回はスコープについてということで、初心者の方にわかりやすく伝えようという記事なので、短いですがこの辺で。