(動的スコープ)の使用
procedure Main is
X, Y, Z : Integer;
procedure Suba is
A, Y, X : Integer;
begin
-- Suba body
end;
procedure Subb is
A, B, Z : Integer;
begin
-- Subb body
end;
procedure Subc
A, X, W : Integer;
begin
--- Subc body
end;
begin
--- Main body
end;
問題は次のとおりです。呼び出しシーケンスについて、最後のプロシージャMainがSubaを呼び出すときに表示される変数を記述します。SubaはSubbを呼び出します。SubbはSubcを呼び出します
答えはなぜですか:Suba:A、X、W Subb:B、Z Subc:Y
私はそれを試してみましたが、それがどのように答えであるかわかりません誰もが説明を提供できます
各呼び出しは、呼び出し元に表示される変数を「継承」し、独自の変数を導入します。呼び出しが呼び出し元の変数と同じ名前の変数を導入した場合、呼び出し元の変数はシャドウされます。内側から見えるように、このようなレイヤーを想像してSubc
ください:
Main X Y Z
Suba A Y Z
Subb A B Z
Subc A W X
表示される変数は、下から見上げた各列の最初の変数です。これは、への呼び出しの内側からSubc
、次のことを確認できることを示しています。
* `A`, `W`, and `X` as defined by `Subc`.
* `B` and `Z` as defined by `Subb`.
* `Y` as defined by `Suba`.
これは、ロール状の反転Suba
とSubc
あなたが質問に言及ように。Suba
まったく定義さW
れていないため、その答えは実際には意味がありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加