Difference between revisions of "How to use generics"
From Free Pascal wiki
Jump to navigationJump to searchBenGrasset (talk | contribs) |
|||
Line 1: | Line 1: | ||
− | An example of how to use generics to write a function gmax() that takes the maximum of two not-yet-typed variables. | + | An example of how to use generics to write a <syntaxhighlight lang="pascal" enclose="none">function gmax()</syntaxhighlight> that takes the maximum of two not-yet-typed [[Variable|variables]]. |
− | Note that while the functions here are namespaced by the classname, FPC versions from 3.1.1 onwards also support fully free-standing generic methods. <syntaxhighlight> | + | Note that while the functions here are namespaced by the classname, FPC versions from 3.1.1 onwards also support fully free-standing generic methods. |
+ | |||
+ | <syntaxhighlight lang="pascal"> | ||
program UseGenerics; | program UseGenerics; | ||
Revision as of 15:42, 1 July 2019
An example of how to use generics to write a function gmax()
that takes the maximum of two not-yet-typed variables.
Note that while the functions here are namespaced by the classname, FPC versions from 3.1.1 onwards also support fully free-standing generic methods.
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.