Spec-Zone.ru › Ada 2012
Справочник Ada 2012

12.2 Тела обобщенных единиц

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

Динамическая семантика

Выполнение обобщенного тела не имеет других последствий, кроме как установления возможности дальнейшей инстанциации обобщенной единицы без сбоя проверки Elaboration_Check. Если обобщенное тело является дочерним элементом обобщенного пакета, то его выполнение устанавливает, что каждый соответствующий объявление, вложенный в экземпляре родителя (см. 10.1.1), может отныне быть инстанцирован без сбоя проверки Elaboration_Check.
ПРИМЕЧАНИЯ
4 Синтаксис обобщенных подпрограмм подразумевает, что тело обобщенной подпрограммы всегда является завершением объявления.

Примеры

Пример тела обобщенной процедуры:
procedure Exchange(U, V : in out Elem) is -- см. 12.1
T : Elem; -- обобщенный формальный тип
begin
T := U;
U := V;
V := T;
end Exchange;
Пример тела обобщенной функции:
function Squaring(X : Item) return Item is -- см. 12.1
begin
return X*X; -- формальный оператор "*"
end Squaring;
Пример тела обобщенного пакета:
package body On_Vectors is -- см. 12.1
function Sum(A, B : 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 Sum;
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 Sigma;
end On_Vectors;


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API