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

8.4 Операторы use

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

Синтаксис

use_clause ::= use_package_clause | use_type_clause
use_package_clause ::= use package_name {, package_name};
use_type_clause ::= use type subtype_mark {, subtype_mark};

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

Имя пакета package_name оператора 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, если он обозначен именем package_name этого оператора. Тип называется в операторе use_type_clause, если он определяется меткой subtype_mark этого оператора.
Для каждого пакета, названного в операторе use_package_clause, область видимости которого включает данное место, каждое объявление, расположенное непосредственно внутри декларативной области пакета, является потенциально видимым в этом месте, если объявление видимо в этом месте. Для каждого типа T или T'Class, названного в операторе use_type_clause, область видимости которого включает данное место, объявление каждого примитивного оператора типа T потенциально видимо в этом месте, если его объявление видимо в этом месте.
Объявление является видимым, если оно потенциально видимо, за исключением случаев конфликта имён:
  • Потенциально видимое объявление не является видимым, если рассматриваемое место находится в непосредственной области видимости одноимённого объявления.
  • Потенциально видимые объявления, имеющие одинаковое имя, не являются видимыми, если каждое из них не является перегружаемым объявлением.

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

Выполнение оператора 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