lazarus/components/codetools/examples/scanexamples/genericsexample.pas
2011-02-03 09:29:05 +00:00

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.