Книга: Описание языка PascalABC.NET
Описание типов
Описание типов
Раздел описания типов начинается со служебного слова type, после которого следуют строки вида
имя типа = тип;
Например, type
arr10 = array [1..10] of integer;
myint = integer;
pinteger = ^integer;
IntFunc = function(x: integer): integer;
Обычно описание используется для составных типов (статические массивы, процедурные переменные, записи, классы) чтобы дать имя сложному типу. Если для типа определена именная эквивалентность типов, это единственный способ передать переменные этого типа в подпрограмму.
Описание типов для классов использовать обязательно:
type
A = class
i: integer;
constructor Create(ii: integer);
begin
i:=ii;
end;
end;
Если описание типа используется просто для того чтобы заменить одно имя на другое, то такие типы называются синонимами типов:
type
int = integer;
double = real;
Описания типов могут быть обобщёнными, т.е. включать параметры-типы в угловых скобках после имени типа.
type
Dict<K,V> = Dictionary<K,V>;
Arr<T> = array of T;
Использование такого типа с конкретным параметром-типом называется инстанцированием типа:
var
a: Arr<integer>;
d: Dict<string,integer>;
При описании рекурсивных структур данных указатель на тип может фигурировать раньше описания самого типа в определении другого типа:
type
PNode = ^TNode;
TNode = record
data: integer;
next: PNode;
end;
При этом важно, чтобы определения обоих типов находились в одном разделе type.
В отличие от Delphi Object Pascal следующее рекурсивное описание верно:
type
TNode = record
data: integer;
next: ^TNode;
end;
Отметим, что для ссылочных типов (классов) разрешается описание поля с типом, совпадающим с типом текущего класса:
type
Node = class
data: integer;
next: Node;
end;
- Описание типов модулей оперативной памяти
- Краткое описание форматов
- Список типов .NET
- Листинг ПЗ.З. Описание всех типов лексем
- ОПИСАНИЕ ТИПОВ ФУНКЦИЙ
- Листинг П3.8. Описание допустимых типов триад
- Динамические массивы
- Целые типы
- Файловые типы
- Символьный тип
- Глава 8 Оперативная память
- Как работает модуль оперативной памяти