Настраиваемые тела
Тело настраиваемой подпрограммы или настраиваемого пакета (настраиваемое тело) является шаблоном для тел соответствующих подпрограмм или пакетов, получаемых конкретизацией настройки. Синтаксис настраиваемого тела идентичен обычному телу.
Для каждого описания настраиваемой подпрограммы должно быть соответствующее тело.
Предвыполнение настраиваемого тела не имеет другого эффекта, кроме установления того, что тело начиная с этого момента может быть использовано в качестве шаблона для получения соответствующих экземпляров.
Пример настраиваемого тела процедуры:
procedure EXCHANGE(U, V : in out ELEM) is -—см. пример в 12.1 Т : ELEM; -- формальный тип настройки begin
Т := U; U := V; V := Т; end EXCHANGE;
Пример тела настраиваемой функции:
function SQUARING(X : ITEM) return ITEM is -— см. пример в 12.1 begin
return X*X; -— формальная операция «*» end;
Пример тела настраиваемого пакета:
package body ON_VECTORSis -- см. пример в 12.1
function SUM(A, В : VECTOR) return VECTOR is
RESULT : VECTOR(A'RANGE); -— формальный тип VECTOR BIAS : constant INTEGER := B'FIRST - A'FIRST; begin
if A'LENGTH /= B'LENGTH then raise LENGTH_ERROR; end if;
for N in A'RANGE loop
RESULT(N) := SUM(A(N), B(N + BIAS)); -— формальная функция SUM end loop;
return RESULT; end;
function SIGMA(A : VECTOR) return ITEM is
TOTAL : ITEM := A(A'FIRST); -— формальный тип ITEM begin
for N in A'FIRST + 1 .. A'LAST loop
TOTAL := SUM(TOTAL, A(N)); -— формальная функция SUM end loop;
return TOTAL; end;
end;
Ссылки:
конкретизация настройки 12.3, настраиваемая подпрограмма 12.1,настраиваемое тело 12.1, настраиваемый пакет 12.1, пакет 7, подпрограмма 6, Предвыполнение 3.9, тело 3.9, тело пакета 7.1, тело подпрограммы 6.3, экземпляр 12.3.
Пред. | Уровень выше | След. | |
Глава 12.
НАСТРАИВАЕМЫЕ МОДУЛИ
|
Содержание |
12.3. КОНКРЕТИЗАЦИЯ НАСТРОЙКИ |