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

削除された内容 追加された内容
編集の要約なし
114.179.45.118 (会話) による ID:65811491 の版を取り消し
30行目:
; [[静的スコープ]] (static scope) : 構文スコープ ('''lexical scope''')。構文上で決定されるスコープ。
; [[動的スコープ]] (dynamic scope) : 実行時の関数の親子関係で名前を導入が導入されるスコープ。関数が呼び出し元で展開されたかのようなスコープが構成される。実行時に名前による解決が必要なため、普通にコンパイルしてこれを実現するのは面倒である。
; [[名前空間]] (namespace) : 厳密にいえば名前空間自体はスコープそのものではなく、スコープを導入する機構である。おおまかに2通りのものを名前空間と呼んでいる。(1)名前の集合を定義するもので、任意のタイミングで名前空間を導入し、定義された名前を参照可能にすることができる。名前空間では持続範囲を指定できるため、外部で必要のない名前の拡散を避けることもできる。名前空間自体も一種のスコープを持ち、名前空間の名前によって参照される。この視点では、上記のファイルスコープやローカルスコープも暗黙の名前空間でスコープを構成していると考えられる。ただし無名であり、外部に導入できない名前空間である。<br/>(2)ごく単純なプログラミング言語を除いて、たとえば構造体のメンバ名などは、他の名前と干渉せず、その構造体の中でユニーク(唯一)であれば任意の名前が使える([[予約語]]と同一の場合は制限されることもある。字句や構文の都合にもよる)。そのような「名前が干渉せず、区切られている」それぞれの空間を名前空間という。Lispにおける「Lisp-1とLisp-2の議論」などがある。、
 
==注==