Spec-Zone.ru › Ada 2012
Справочник Ada 2012

8.4 Операторы использования

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

Синтаксис

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

Правила законности

Имя пакета package_имя оператора use_package_clause должно обозначать нелимитированный вид пакета.

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

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

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

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

Примеры

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


Spec-Zone.ru

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