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


Конкретизация настройки - часть 8


—- теперь тип MIX может быть сопоставлен типу VECTOR, a —- OPTION — типу TABLE

package R is new P(ITEM => BOOLEAN, INDEX => COLOR, VECTOR => MIX, TABLE => OPTION);

—- теперь тип MIX не может быть сопоставлен типу TABLE, —- а тип OPTION — типу VECTOR

Примечание.

Если тип любого индекса или тип компоненты формального индексируемого типа сам является формальным типом, то по приведенным правилам в экземпляре его имя обозначает соответствующий фактический подтип (см. 12.3 г)).

Ссылки:

индекс 3.6, индексируемый тип 3.6, исключение CONSTRAINT-ERROR 11.1, компонента массива 3.6, конкретизация настройки 12.3, неограниченный индексируемый тип 3.6, ограничение 3.3, ограничение индекса 3.6.1, ограниченный индексируемый тип 3.6, оператор возбуждения исключения 11.3, определение индексируемого типа 3.6, подтип 3.3, предвыполнение 3.9, сопоставление фактических параметров настройки 12.3, формальный тип 12.1, формальный тип настройки 12.1.2.

12.3.5. ПРАВИЛО СОПОСТАВЛЕНИЯ ДЛЯ ФОРМАЛЬНЫХ ССЫЛОЧНЫХ ТИПОВ

Формальному ссылочному типу сопоставляется фактический ссылочный подтип, если тип указываемых объектов для формального и фактического типов один и тот же. Если указываемый тип отличен от скалярного, то указываемые подтипы должны быть либо оба ограниченными, либо оба неограниченными.

Если настраиваемый модуль имеет формальный ссылочный тип, то при предвыполнении соответствующей конкретизации проверяется совпадение любых ограничений на указанные объекты фактического и формального ссылочных типов. При несовпадении возбуждается исключение CONSTRAINT-ERROR.

Пример:

-- формальным типам настраиваемого пакета

generic

type NODE is private;

type LINK is accees NODE; package P is

... end:

-- могут быnь сопоставлены фактические типы

type CAR; type CAR_NAME is access CAR; type CAR is record

PRED, SUCC : CAR_NAME; NUMBER : LICENSE_NUMBER; OWNER : PERSON; end record;

-- в следующей конкретизации настройки package R is new P(NODE => CAR, LINK => CAR_NAME);




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



Книжный магазин