Справочное руководство по языку Ада-83


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


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

квалифицированное-выражение ::= обозначение-типа' (выражение) | обозначение-типа'агрегат

Тип операнда должен совпадать с базовым типом обозначения типа. Значение квалифицированного выражения — это значение операнда. Вычисление квалифицированного выражения выдает операнд и проверяет, принадлежит ли его значение подтипу, заданному в обозначении типа. При отрицательном результате проверки возбуждается исключениеCONSTRAINT_ERROR.

Примеры:

type MASK is (FIX, DEC, EXP, SIGNIP); type CODE is (FIX, CLA, DEC, TNZ, SUB);

PRINT (MASK'(DEC)); -- DEC типа MASK PRINT (СОDЕ'(DЕC)); -- DЕС типа 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

Примечание.

Когда тип литерала перечисления или агрегата неизвестен из контекста, квалифицированное выражение может быть использовано для явного установления типа. Например, совмещенный литерал перечисления должен быть квалифицирован в следующих случаях: при использовании его в качестве параметра в вызове совмещенной подпрограммы, которая не может быть идентифицирована на основе типов остальных параметров и типа результата; в отношении, в котором оба операнда — совмещенные литералы перечисления; в массиве или диапазоне параметра цикла, в которых обе границы — совмещенные литералы перечисления. Явная квалификация используется также для определения совмещенной функции без параметров или для ограничения значения данным подтипом.

Ссылки:

агрегат 4.3, базовый тип 3.3, возбуждение исключений 11, вызов подпрограммы 6.4, выражение 4.4, граница диапазона 3.5, диапазон 3.3, исключение CONSTRAINT_ERROR 11.1, контекст разрешения совмещения 8.7, литерал перечисления 3.5.1, массив 3.6, обозначение типа 3.3.2, отношение 4.4, параметр цикла 5.5, подпрограмма 6, подтип 3.3, совмещение 8.5, тип 3.3, функция 6.5.

Пред. 

Уровень выше  След.

4.6. ПРЕОБРАЗОВАНИЕ ТИПА

 

Начало  

4.8. ГЕНЕРАТОРЫ




Начало  Назад  Вперед