Тело настраиваемой подпрограммы или настраиваемого пакета (настраиваемое тело) является шаблоном для тел соответствующих подпрограмм или пакетов, получаемых конкретизацией настройки. Синтаксис настраиваемого тела идентичен обычному телу.
Для каждого описания настраиваемой подпрограммы должно быть соответствующее тело.
Предвыполнение настраиваемого тела не имеет другого эффекта, кроме установления того, что тело начиная с этого момента может быть использовано в качестве шаблона для получения соответствующих экземпляров.
Пример настраиваемого тела процедуры:
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.