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

4.7 Квалифицированные выражения

Выражение qualified_expression используется для явного указания типа и проверки подтипа операнда, являющегося либо выражением, либо агрегатом.

Синтаксис

qualified_expression ::=
subtype_mark'(expression) | subtype_mark'aggregate

Правила разрешения имен

Операнд (выражение expression или агрегат aggregate) должен быть разрешен как тип, определяемый subtype_mark, или универсальный тип, который его охватывает.

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

Вычисление qualified_expression вычисляет операнд (и, если он имеет универсальный тип, преобразует его к типу, определяемому subtype_mark) и проверяет, принадлежит ли его значение подтипу, обозначенному subtype_mark. Если проверка завершается неудачно, генерируется исключение Constraint_Error.
ПРИМЕЧАНИЯ
22 Когда контекст не однозначно определяет ожидаемый тип, можно использовать qualified_expression. В частности, если перегруженное имя name или агрегат aggregate передаётся перегруженной подпрограмме, может потребоваться квалификация операнда для разрешения его типа.

Примеры

Примеры разбиения выражений с помощью квалификации:
тип Mask есть (Fix, Dec, Exp, Signif);
тип Code есть (Fix, Cla, Dec, Tnz, Sub);
Print (Mask'(Dec)); -- Dec относится к типу Mask
Print (Code'(Dec)); -- Dec относится к типу Code
для J в Code'(Fix) .. Code'(Dec) цикл ... -- необходима квалификация для Fix или Dec
для J в Code диапазон Fix .. Dec цикл ... -- квалификация не нужна
для J в Code'(Fix) .. Dec цикл ... -- квалификация не нужна для Dec
Dozen'(1 | 3 | 5 | 7 => 2, others => 0) -- см. 4.6


Spec-Zone.ru

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