Spec-Zone.ru › Ada 2022
Руководство по Ada (Ada 2022)

8.4 Операторы use

Оператор use_package_clause обеспечивает непосредственную видимость объявлений, присутствующих во видимой части пакета; оператор use_type_clause обеспечивает непосредственную видимость примитивных операторов типа.

Синтаксис

use_clause ::= use_package_clause | use_type_clause
use_package_clause ::= use имя_пакета_имя {, имя_пакета_имя};
use_type_clause ::= use [all] type маркер_подтипа {, маркер_подтипа};

Правила легальности

имя_пакета_имя оператора use_package_clause должно указывать на нелимитированный вид пакета.

Статическая семантика

Для каждого оператора use_clause существует определенный фрагмент текста, называемый областью видимости оператора use_clause. Для оператора use_clause в рамках context_clause объявления library_unit_declaration или library_unit_renaming_declaration область видимости охватывает всю декларативную область объявления. Для оператора use_clause в рамках context_clause тела, область видимости охватывает всё тело и все подмодули (включая вложенные подмодули). Область видимости не включает context_clauseы сами по себе.
Для оператора use_clause непосредственно внутри декларативной области, область видимости — это часть декларативной области, начинающаяся сразу после оператора use_clause и простирающаяся до конца декларативной области. Однако, область видимости оператора use_clause в частной части библиотечного модуля не включает видимую часть любого публичного потомка этого библиотечного модуля.
Пакет именуется в операторе use_package_clause, если он обозначается именем_пакета_имя этого оператора. Тип именуется в операторе use_type_clause, если он определен маркером subtype_mark этого оператора.
Для каждого пакета, указанного в операторе use_package_clause, область видимости которого охватывает определённую точку, каждое объявление, расположенное непосредственно внутри декларативной области пакета, является потенциально видимым в этой точке, если объявление видно в этой точке. Для каждого типа T или T'Class, указанного в операторе use_type_clause, область видимости которого охватывает определённую точку, объявление каждого примитивного оператора типа T потенциально видно в этой точке, если оно видно в этой точке. Если оператор use_type_clause, область видимости которого охватывает определённую точку, содержит зарезервированное слово all, то следующие сущности также потенциально видны в этой точке, если объявление сущности видно в этой точке:
  • Каждый примитивный подпрограмму типа T, включая каждое значение перечисления (если таковые имеются);
  • Каждый подпрограмму, объявленный непосредственно внутри декларативной области, в которой объявлен родительский тип T, и работающий с типом класса, охватывающим T.
Некоторые неявные объявления могут стать потенциально видимыми в определенных контекстах, как описано в 12.6.
Объявление видимо, если оно потенциально видно, за исключением этих случаев конфликта именования:
  • Потенциально видимое объявление не является видимым, если рассматриваемая точка находится в непосредственной области видимости омонима объявления.
  • Потенциально видимые объявления, имеющие одинаковое идентификатор, не являются видимыми, если каждое из них не является перегружаемым объявлением.

Динамическая семантика

Выполнение оператора use_clause не оказывает никакого эффекта.

Примеры

Пример оператора use в контексте объявления:
with Ada.Calendar; use Ada;
Пример оператора use type:
use type Rational_Numbers.Rational; -- см. 7.1
Two_Thirds: Rational_Numbers.Rational := 2/3;


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API