Spec-Zone.ru › Ada 2022
Руководство по Ada (Ada 2022)

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

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

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

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

Примеры

Пример тела обобщенной процедуры:
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