0

スコープが変数が表示される「場所」であり、参照環境がプログラム内のポイントで表示される変数のセットである場合、それらの間に違いはありますか?

たとえば、ここで「」「スコープの逆は環境を参照している...」と言われていますが、私はその主張をよく理解していません!

4

1 に答える 1

0

「コンバース」という用語は、2 つの実質的に異なるカテゴリ、つまり変数 (のセット) と、変数へのアクセスが可能なコード内の場所を対比することは言うまでもなく、誤称だと考えています。「補足」の方が適切かもしれません。

与えられた理由から、はい、違いがあります。

あなたが引用している参照がおそらく賞賛しようとしているのは、変数/パラメーターのマスキングです。プロシージャに対してローカルに宣言された変数 'a' を検討してください。プロシージャ本体の一部は、'a' という名前の別の変数が宣言されているブロック ローカルであると仮定します。

最初の変数 'a' は、プロシージャの (ローカル) 参照環境の一部になります。そのスコープは、変数 'a' の独自の宣言を含むブロックを除いて、プロシージャ本体全体に及びます。疑似コード (実際のコードは c、perl、plsql など):

proc xy
   local a;
   ...
   block
      local a;
      ...
   endblock
   ...
endproc

この例は説明のみを目的としており、詳細は省略されています: 静的スコープ、いくつかの 'a' を定義する可能性のある他のローカル ブロックから離れた抽象化、および 'outer a' にアクセスするための特別なメカニズム (つまり、perl が許可するシンボル テーブル全体への実行時アクセス)。

于 2013-03-27T18:31:22.957 に答える