Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#14

AW: generischen Typen als "irgendeinen" String-Typen deklarieren

  Alt 13. Sep 2010, 20:10
Nja, im Prinzip kann man nur Records und Objekte "verwenden",

wobei man innerhalb der generischen Klasse/Funktion nur mit Instanzen jonglieren kann, aber nicht mir Funktionen davon oder dessen Inhalt.

Wenn der Delphicompiler aber den generischen Typ erst "auswerten" würde und vorher nur die Syntax prüfen täte, dann könnte man viel mehr damit anstellen.
Das stimmt nicht. Sofern du einen Constraint setzt, kannst du innerhalb der Methoden deiner Klasse problemlos auf Eigenschaften und Methoden des generischen Typs zugreifen, du musst nur unter Umständen T auf deine Klasse/Interface umcasten.

Beispiel:
Delphi-Quellcode:
type
  TFoo<T: class, constructor> = class
    function CreateNewObject: T;
    procedure FreeAndNil(var AObject: T);
    function GetClassName: string;
  end;

{ TFoo<T> }

function TFoo<T>.CreateNewObject: T;
begin
  Result := T.Create;
end;

procedure TFoo<T>.FreeAndNil(var AObject: T);
begin
  AObject.Free;
  AObject := nil;
end;

function TFoo<T>.GetClassName: string;
begin
  Result := T.ClassName;
end;
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (13. Sep 2010 um 20:20 Uhr)
  Mit Zitat antworten Zitat