В данных постах разбираюсь с обобщенными типами данных, руководствуясь книгой Д. Осипова “Delphi. Программирование для Windows. OS X, iOS и Android”. Цель – отработать на практике возможности обобщенных типов.
Зачем нужны обобщенные типы?
Насколько я понял, в том числе для того, чтобы можно было использовать один и тот же алгоритм для разных типов данных. Скажем, есть у нас алгоритм сравнения или сортировки или сложения или ещё чего угодно, но, например, написан он для целочисленных значений.
Допустим, он корректно работает и с другими типами данных. Раньше надо было бы его переписывать на другие типы данных, а сейчас достаточно указать в обобщенном типе данных, что тип данных в данном конкретном случае будет другой.
Где используются?
В процедурах и функциях
В объявлениях классов
В массивах
В объектах
Generyc types в записях
Объявили тип
1 2 3 4 5 |
type TGenericRec<AnyTypeName1,AnyTypeName2,AnyTypeName3>=record A:AnyTypeName1; B:AnyTypeName2; C:AnyTypeName3; D:integer; |
Объявили переменную
1 2 3 |
var GRec1:TGenericRec<integer,integer,double>; GRec2:TGenericRec<string,integer,double>; |
Используем переменные
1 2 |
GRec1.A:=12; GRec2.A='hello'; |