Генерики (Шаблоны классов)


Классический пример фукции max() для разных типов данных

type
    generic TFakeClass<_GT> = class
        class function gmax(a,b: _GT):_GT;
    end;
 
    TFakeClassInt = specialize TFakeClass<integer>;
    TFakeClassDouble = specialize TFakeClass<double>;
 
    class function TFakeClass.gmax(a,b: _GT):_GT;
    begin
         if a > b then result := a
         else result := b;
    end;

BEGIN
    writeln('Integer GMax:', TFakeClassInt.gmax(23,56));
    writeln('Double GMax:', TFakeClassDouble.gmax(23.89,56.5));  
END.