tgeneric9.pp 503 B

1234567891011121314151617181920212223242526272829
  1. {$mode objfpc}
  2. type
  3. generic TMap<TK, TD> = class(TObject)
  4. Key: TK;
  5. Data: TD;
  6. procedure Add(const AKey: TK; const AData: TD);
  7. end;
  8. procedure TMap.Add(const AKey: TK; const AData: TD);
  9. begin
  10. Key := AKey;
  11. Data := AData;
  12. end;
  13. type
  14. TMyStringList = specialize TMap<string, TObject>;
  15. var
  16. slist: TMyStringList;
  17. begin
  18. slist := TMyStringList.Create;
  19. slist.Add('test', slist);
  20. if slist.Key <> 'test' then
  21. halt(1);
  22. if slist.Data <> slist then
  23. halt(1);
  24. slist.Free;
  25. end.