pascalabcnet/CodeExamples/TypeclassExample.pas

27 lines
447 B
ObjectPascal
Raw Normal View History

2018-04-10 20:19:28 +03:00
type
SumTC[T] = typeclass
function sum(v1, v2: T): T;
end;
SumTC[integer] = instance
function sum(v1, v2: integer): integer;
begin
Result := v1 + v2;
end;
end;
function Sum3<T>(v1, v2, v3: T): T; where SumTC[T];
begin
2018-04-25 19:54:24 +03:00
Result := SumTC&[T].sum(v1, SumTC&[T].sum(v2, v3));
2018-04-10 20:19:28 +03:00
end;
begin
var v1, v2, v3, res: integer;
2018-04-25 19:54:24 +03:00
v1 := 1;
v2 := 2;
v3 := 3;
2018-04-10 20:19:28 +03:00
2018-04-20 12:03:38 +03:00
res := Sum3&[integer](v1, v2, v3);
2018-04-10 20:19:28 +03:00
Write(res);
end.