Книга: Описание языка 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>;
forvar i := 1 to 10 do
si.Push(Random(100));
whilenot si.IsEmpty do
sr.Push(si.Pop);
whilenot sr.IsEmpty do
write(sr.Pop,' ');
end.
Подстановка конкретного типа-параметра в обобщенный тип называется инстанцированием.
- Обобщенные структуры
- Обобщенные подпрограммы: обзор
- Обобщенные типы: обзор
- Типы данных для работы с датой и временем
- Большие целые типы
- Типы страниц и их использование
- 1.2.3. Константы, переменные и типы
- 4. Лекция: Типы данных
- 9.1. Классы и прототипы
- 4. Кортежи. Типы кортежей
- 5. Отношения. Типы отношений
- 1. Базовые типы данных