Квалифицированные выражения
Квалифицированное выражение используется для явного указания типа и, возможно, подтипа операнда, заданного выражением или агрегатом.
квалифицированное-выражение ::= обозначение-типа' (выражение) | обозначение-типа'агрегат
Тип операнда должен совпадать с базовым типом обозначения типа. Значение квалифицированного выражения — это значение операнда. Вычисление квалифицированного выражения выдает операнд и проверяет, принадлежит ли его значение подтипу, заданному в обозначении типа. При отрицательном результате проверки возбуждается исключение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. ГЕНЕРАТОРЫ |