|
===================================== 〔語彙分解〕的な部分一致の検索結果は以下の通りです。 ・ ー : [ちょうおん] (n) long vowel mark (usually only used in katakana)
静的スコープ(せいてきスコープ、)とは、プログラミング言語におけるスコープの一種。構文構造のみから決定できるため構文スコープともいう。 ブロックなどの構造を持つプログラミング言語では、あるブロックの内側で定義された変数はそのブロックの外側から操作することができないのが普通である。以下の疑似コードでは A B ブロック A で定義されている変数x とブロックB で定義されている変数x は同じ識別子を持つが、ブロックが異なるため実体は別である。また、ブロックB からは、さらに内側のブロックC で定義されている変数を参照することはできない。逆にブロックC からはブロックB で定義されている変数x とブロックC で定義されている変数y が参照可能である。近代的なプログラミング言語では、コードレベルのブロックだけでなく、名前空間を導入してスコープを制限する機能が普及しつつある。静的スコープはプログラミングの安全性や、最適化が行いやすいなどの理由で構造化言語を中心に広く採用されている。静的スコープでないものの代表は動的スコープである。 == Common Lispにおける例 == Common Lispは、静的スコープと動的スコープを共にサポートする言語である。定められた方法で指定することで、変数を静的スコープにしたり、動的スコープにしたりすることができる。 (defvar *a *) ;; *a * を動的スコープで値なしで宣言する。 ;; アスタリスクは名前の一部である。 ;; defvarは、以降のそれに対する束縛が静的なものでなく、 ;; 動的なものである事を保証する。 (setf *a * 5) ;; 変数 *a * を整数 5 に設定する。 (let (( *a * 3)) *a *) ; --> 3 ;; 明示的にletの中で上書きされた場合、 *a *は3 *a ; --> 5 ;; letの外に出るともとに戻る (defvar func-lex) (setf func-lex 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「静的スコープ」の詳細全文を読む スポンサード リンク
|