「スコープ (プログラミング)」の版間の差分

削除された内容 追加された内容
軽快 (会話 | 投稿記録)
+lk
13行目:
=== 名前空間からの分類 ===
; 大域スコープ (global scope)
: プログラムの「全体」から見えるスコープのこと。このスコープに属する変数は、[[グローバル変数]]または大域変数といわれる。[[BASIC]]のような単純な言語では大域スコープしか存在しない場合がある。[[Python]]のような大域グローバル変数の書き換えが簡単には行えない言語も存在する。
:
; ファイルスコープ (file scope)
19行目:
:
; 局所スコープ (local scope)
: ある関数やブロックの範囲内に限定されたスコープのこと。このスコープに属する変数は、[[ローカル変数]]と呼ばれる。何を持って範囲を与えるかは言語により様々だが、一般に[[ネスティング|入れ子]]のローカルスコープは外側を参照できるのが普通である。このとき兄弟関係にあるスコープは見えない。変数宣言が必要な言語の場合は宣言文以降にスコープが制限される場合が多い。
:
; インスタンススコープ (instance scope)
: クラスベースの[[オブジェクト指向言語]]で、各インスタンス毎に割り当てられた変数が所属メソッド(メンバ関数)からのみ参照されるスコープのこと。このスコープに属する変数は、[[インスタンス変数]]、メンバ変数などと呼ばれる。いわゆる[[カプセル化]]はこれを指す。保護されない変数の場合は、クラス定義が見えていてオブジェクトにアクセスできる場合は直接参照できる。[[C言語]]の[[構造体]]参照なども一種のインスタンススコープである。
:
; クラススコープ (class scope)
: クラスベースのオブジェクト指向言語で、あるクラスの定義全体から参照できるスコープ。このスコープに属する変数は、[[クラス変数]]と呼ばれる。インスタンススコープと異なり変数が共有されるので、ある種の制限された大域スコープと考えることができる。クラススコープをもたない言語の場合でも、ファイルスコープを用いることで同様の機構を実現できる場合がある。ある特定のクラスだけなのか、派生クラスまでも含むのかによってそれぞれクラスインスタンススコープ/クラススコープとさらに細分化する。
 
=== スコープ導入からの分類 ===