mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-06 21:53:59 +02:00
32 lines
676 B
ObjectPascal
32 lines
676 B
ObjectPascal
program GenericExamples;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
// generics
|
|
type
|
|
generic TArr<T> = array[0..2] of T;
|
|
generic TProc<T> = procedure(Arg: T);
|
|
generic TRecG<T> = record
|
|
F: T;
|
|
end;
|
|
TGenericArray<T> = array of T;
|
|
IGenericInterface<T> = interface
|
|
function DoSomething(Arg: T): T;
|
|
end;
|
|
TGenericClass<T1,T2> = class(TInterfacedObject, IGenericInterface<T1>)
|
|
F: T2;
|
|
type
|
|
Intf = IGenericInterface<Integer>;
|
|
function DoSomething(Arg: T1): T2;
|
|
function Test(Arg: Intf): Intf;
|
|
end;
|
|
|
|
var
|
|
ArraySpecialize: TGenericArray<Integer>;
|
|
ClassSpecialize: TGenericClass<Integer,String>;
|
|
|
|
begin
|
|
FooInt := TGenericClass<Integer,String>.Create;
|
|
end.
|
|
|