14.2 видимостьПравила видимости определяют какие описания видны (или непосредственно видны) в каждом месте текста программы. Они применимы к явным и неявным описаниям. Описание видимо только в определенной части своей области действия; оно начинается в конце описания , а в спецификации пакета -после зарезервированного слова is , следующего после идентификатора пакета. Видимость может быть прямой ( непосредственной ) или видимостью по имени. Описание видимо по имени в точках программы для : • описания, находящегося в видимом разделе описания пакета ; • описания входа задачного типа; • описания компоненты описания типа ; • спецификации дискриминанта описания типа ; • спецификации параметра подпрограммы или описания входа ; • описания параметра настройки модуля. Описание видимо прямо ( непосредственно ) там, где нет видимости по имени. В этом случае описание видимо непосредственно в определенном разделе его области действия; этот раздел распространяется до конца непосредственной области действия описания, за исключением ситуации, когда описание скрыто. Описание, находящееся в видимом разделе пакета можно сделать непосредственно видимым с помощью спецификатора использования Use. (См. Раздел 14.3). 173 Глава 14. Правила видимости 172 Ада 95. Введение в программирование
Описание скрыто во внутренней зоне описания, если в нем имеется омоним этого описания. В этом случае внешнее описание является скрытым в непосредственной области действия внутреннего омонима. Описание является омонимом другого описания, если они имеют один и тот же идентификатор. D Пример. procedure A is X, Y, Z : integer ; - - глобальные переменные для процедуры В procedure В is - - вложенная процедура - - локальные переменные, невидимые в процедуре А X : integer ; - - омоним, так как в процедуре А имеется - - переменная с именем X W, S: integer; begin - - можно использовать Y, Z, А . X - глобальные ; - -. S , W, X - локальные W : = X ; - - означает W : = В . X S : = Y ; - - означает S : = В . Y X : = А . X ; - - означает В . X : = А. X S : = W ; - - означает В . S : = В . W end В; begin - - тело А ... - - разрешено использование только переменных X . Y, Z end A; В данном примере имеются описания в процедуре А и процедуре В. Так как процедура В вложена в процедуру А, описания в процедуре А являются глобальными и видимыми в В. Описания в процедуре В -локальные и невидимы в процедуре А. Если один и тот же идентификатор находится в разных описаниях ( является омонимом ), то он соответствует разным понятиям. В нашем примере таким является идентификатор X. При его использовании в теле процедуры В идентификатор X рассматривается как локальная переменная и относится к В . Доступ в теле процедуры В к глобальной переменной X должен выполняться с помощью составного имени А . X , которое де- лает глобальную переменную X из процедуры А непосредственно видимой в теле В. В спецификации подпрограммы скрыто каждое описание, совпадающее с описанием подпрограммы. Аналогичное правило действует для конкретизации настройки с описанием подпрограммы, .в описании входа, в разделе формальных параметров оператора accept. В этих случаях описания не являются видимыми ни по имени, ни непосредственно. |
| Оглавление| |