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


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


Примечание.

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

Ссылки:

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

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

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

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

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

Пример:

-- дана спецификация настраиваемой функции generic

type ITEM is private;

with function "*" (U, V : ITEM) return ITEM is <>;

function SQUARING(X : ITEM) return ITEM;

-- и функция function MATRIX_PRODUCT(A, В : MATRIX) return MATRIX;

-- возможна следующая конкретизация

function SQUARE is new SQUARING(MATRIX, MATRIX&#x201E;PRODUCT):




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