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


Настраиваемые тела


Тело настраиваемой подпрограммы или настраиваемого пакета (настраиваемое тело) является шаблоном для тел соответствующих подпрограмм или пакетов, получаемых конкретизацией настройки. Синтаксис настраиваемого тела идентичен обычному телу.

Для каждого описания настраиваемой подпрограммы должно быть соответствующее тело.

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

Пример настраиваемого тела процедуры:

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. КОНКРЕТИЗАЦИЯ НАСТРОЙКИ



Содержание раздела