Справочник по Ada 95
8.4 Операторы использования
Оператор use_package_clause обеспечивает непосредственную видимость объявлений, которые появляются во видимой части пакета; оператор use_type_clause обеспечивает непосредственную видимость примитивных операторов типа.
Синтаксис
use_clause ::= use_package_clause | use_type_clause
use_package_clause ::= use имя_пакета {, имя_пакета};
use_type_clause ::= use 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, область видимости которого охватывает место, каждое объявление, которое появляется непосредственно внутри области объявления пакета, является потенциально видимым в этом месте, если объявление видимо в этом месте. Для каждого типа T или T'Class, определяемого метка_подтипа оператора use_type_clause, область видимости которого охватывает место, объявление каждого примитивного оператора типа T является потенциально видимым в этом месте, если его объявление видимо в этом месте.
Объявление является видимым, если оно потенциально видимо, за исключением этих случаев конфликтов имён:
- Потенциально видимое объявление не является видимым, если рассматриваемое место находится в непосредственной области видимости омонима объявления.
- Потенциально видимые объявления, имеющие одинаковый идентификатор, не являются видимыми, если каждое из них не является перегружаемым объявлением.
Динамическая семантика
Выполнение оператора use_clause не оказывает никакого эффекта.
Примеры
Пример оператора использования в контексте объявления:
with Ada.Calendar; use Ada;
Пример оператора использования типа:
use type Rational_Numbers.Rational; -- см. 7.1
Two_Thirds: Rational_Numbers.Rational := 2/3;
Two_Thirds: Rational_Numbers.Rational := 2/3;