Difference between revisions of "How to use generics"
From Free Pascal wiki
Jump to navigationJump to search (extracted from Howto Use Interfaces) |
|||
Line 31: | Line 31: | ||
end. | end. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | [[Category:Tutorials]] |
Revision as of 15:02, 22 March 2017
An example of how to use generics to write a function gmax() that takes the maximum of two not-yet-typed variables. Note that the functions are namespaced by the classname. A disadvantage may be that generics can't be overloaded.
program UseGenerics;
{$mode objfpc}{$H+}
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
// show max of two integers
writeln( 'Integer GMax:', TFakeClassInt.gmax( 23, 56 ) );
// show max of two doubles
writeln( 'Double GMax:', TFakeClassDouble.gmax( 23.89, 56.5) );
readln();
end.