スコープ導入からの分類
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/26 23:22 UTC 版)
「スコープ (プログラミング)」の記事における「スコープ導入からの分類」の解説
静的スコープ (static scope) 字句スコープまたはレキシカルスコープ (lexical scope) とも。ブロックや関数などの入れ子構造によって静的に可視範囲が導入されるスコープ。 動的スコープ (dynamic scope) 実行時の動的な呼出の親子関係によって導入されるスコープ。関数が呼び出し元で展開されたかのようなスコープが構成される。実行時に名前による解決が必要なため、普通にコンパイルしてこれを実現するのは面倒である。 名前空間 (namespace) 厳密にいえば名前空間自体はスコープそのものではなく、スコープを導入する機構である。おおまかに2通りのものを名前空間と呼んでいる。 名前の集合を定義するもので、任意のタイミングで名前空間を導入し、定義された名前を参照可能にすることができる。名前空間では持続範囲を指定できるため、外部で必要のない名前の拡散を避けることもできる。名前空間自体も一種のスコープを持ち、名前空間の名前によって参照される。この視点では、上記のファイルスコープやローカルスコープも暗黙の名前空間でスコープを構成していると考えられる。ただし無名であり、外部に導入できない名前空間である。 ごく単純なプログラミング言語を除いて、たとえば構造体のメンバー名などは、他の名前と干渉せず、その構造体の中でユニーク(唯一)であれば任意の名前が使える(予約語と同一の場合は制限されることもある。字句や構文の都合にもよる)。そのような「名前が干渉せず、区切られている」それぞれの空間を名前空間という。Lispにおける「Lisp-1とLisp-2の議論」などがある。
※この「スコープ導入からの分類」の解説は、「スコープ (プログラミング)」の解説の一部です。
「スコープ導入からの分類」を含む「スコープ (プログラミング)」の記事については、「スコープ (プログラミング)」の概要を参照ください。
- スコープ導入からの分類のページへのリンク