Описание языка «PascalABC.NET».

Обобщенные типы: обзор.

Обобщенным типом (generic) называется шаблон для создания класса, записи или интерфейса, параметризованный одним или несколькими типами. Класс (запись, интерфейс) образуется из шаблона класса (записи, интерфейса) подстановкой конкретных типов в качестве параметров. Параметры указываются после имени обобщенного типа в угловых скобках. Например, Stack<T> - шаблон класса списка элементов типа T, параметризованный типом T, а Stack<integer> - класс списка с элементами типа integer.

Обобщённые подпрограммы описываются здесь.

Для объявления шаблона класса используется следующий синтаксис:

Type. Node<T> = class. Data: T; Next: Node<T>; public. constructor Create(d: T; nxt: Node<T>); begin. Data := d; Next := nxt; end; end; Stack<T> = class. Tp: Node<T>; public. procedure Push(x: T); begin. Tp := new Node<T>(x,tp); end; function Pop: T; begin. Result := tp.data; Tp := tp.next; end; function Top: T; begin. Result := tp.data; end; function IsEmpty: boolean; begin. Result := tp = nil; end; end;

Использование шаблона класса иллюстрируется ниже:

Var. Si: Stack<integer>; Sr: Stack<real>; Begin. Si := new Stack<integer>; Sr := new Stack<real>; for var i := 1 to 10 do. Si.Push(Random(100)); while not si.IsEmpty do. Sr.Push(si.Pop); while not sr.IsEmpty do. Write(sr.Pop,' '); End.

Подстановка конкретного типа-параметра в обобщенный тип называется инстанцированием.