Каждый вызов «наследует» переменные, видимые его вызывающей стороной, и вводит свои собственные переменные.Если при вызове вводится переменная с тем же именем, что и у вызывающей стороны, переменная вызывающей стороны затеняется.Изобразите слои, подобные этому, как они видны изнутри 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
.