tgeneric1.pp 592 B

1234567891011121314151617181920212223242526272829303132333435
  1. {$mode objfpc}
  2. type
  3. generic TList<_T>=class(TObject)
  4. data : _T;
  5. procedure Add(item: _T);
  6. end;
  7. procedure TList.Add(item: _T);
  8. begin
  9. data:=item;
  10. end;
  11. type
  12. TMyIntList = specialize TList<integer>;
  13. TMyStringList = specialize TList<string>;
  14. var
  15. ilist : TMyIntList;
  16. slist : TMyStringList;
  17. someInt : integer;
  18. begin
  19. someInt:=10;
  20. ilist := TMyIntList.Create;
  21. ilist.Add(someInt);
  22. writeln(ilist.data);
  23. if ilist.data<>10 then
  24. halt(1);
  25. slist := TMyStringList.Create;
  26. slist.Add('Test');
  27. writeln(slist.data);
  28. if slist.data<>'Test' then
  29. halt(1);
  30. end.