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

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

Квалифицированное выражение используется для явного указания типа и проверки подтипа операнда, который представляет собой либо выражение, либо агрегат.

Синтаксис

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

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

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

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

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

Примеры

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


Spec-Zone.ru

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