AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein was ist der Sinn von Templates/Generics ?
Thema durchsuchen
Ansicht
Themen-Optionen

was ist der Sinn von Templates/Generics ?

Ein Thema von paule32.jk · begonnen am 7. Okt 2024 · letzter Beitrag vom 9. Okt 2024
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#1

was ist der Sinn von Templates/Generics ?

  Alt 7. Okt 2024, 18:59
wenn man schreibt:

FooResult := TFoo<String>.Create('Hello Free Pascal'); kann man doch auch gleich den "Create" Konstrucktor überladen ?

Delphi-Quellcode:
type
  TFoo = class
  public
    Create; overload;
    Create(String);
    ...
  end;
oder seh ich da was falsches ?
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: was ist der Sinn von Templates/Generics ?

  Alt 7. Okt 2024, 19:28
Und das machst Du dann für jeden erdenklichen Datentyp inkl. selbstbdeklarierte?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: was ist der Sinn von Templates/Generics ?

  Alt 7. Okt 2024, 19:39
na irgendwie muss man doch dann doch prüfen, welcher Datentyp da dann übergeben wurde ?

im Fall von TFoo<String>.Create

in etwa so: IF Type = String THEN ...

also ich seh da keinen echten Mehrwert.
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

AW: was ist der Sinn von Templates/Generics ?

  Alt 7. Okt 2024, 19:41
Wieso musst Du das prüfen? Wenn ich eine TList<TBla> deklariere, dann weiß ich, dass da nur TBla-Elemente enthalten sein können.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: was ist der Sinn von Templates/Generics ?

  Alt 7. Okt 2024, 19:42
na irgendwie muss man doch dann doch prüfen, welcher Datentyp da dann übergeben wurde ?

im Fall von TFoo<String>.Create

in etwa so: IF Type = String THEN ...

also ich seh da keinen echten Mehrwert.
Du willst ja gerade etwas machen, das für mehrere Datentypen gilt. Zum Beispiel eine Liste TList<Integer> oder TList<TForm>. Darin unterscheidest du aber nicht die ganzen konkreten Typen.

Dann hätte das wirklich keinen Mehrwert.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: was ist der Sinn von Templates/Generics ?

  Alt 7. Okt 2024, 19:46
also ein Erweiterung von: TList.Objects (die ja nur auf Pointer ausgelegt sind)
obwohl, da könnte man doch auch einen Cast anlegen ?

Weil, wofür sollte man Datentypen im Code behandeln, die vorher nicht bekannt sind ?
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#7

AW: was ist der Sinn von Templates/Generics ?

  Alt 7. Okt 2024, 19:49
Generics sind dafür gedacht, generischen Code zu schreiben( ja, daher der Name). Das bedeutet, dass man Code entwickelt, der nicht auf einen bestimmten Datentyp festgelegt ist. Zur Compiletime wird der generische Platzhalter dann durch den konkret benutzten Datentyp ersetzt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: was ist der Sinn von Templates/Generics ?

  Alt 7. Okt 2024, 20:02
Ein kleines Beispiel:
Delphi-Quellcode:
uses
  System.Generics.Collections;

type
  TMyValue<T> = class
  private
    FValue: T;
    procedure SetValue(const Value: T);
  public
    property Value: T read FValue write SetValue;
  end;

procedure Test;
var
  ValInteger: TMyValue<Integer>;
  ValList: TMyValue<TList<Integer>>;
begin
  ValInteger := TMyValue<Integer>.Create;
  try
    ValInteger.Value := 42;
    ShowMessage(ValInteger.Value.ToString);
  finally
    ValInteger.Free;
  end;

  ValList := TMyValue<TList<Integer>>.Create;
  try
    ValList.Value := TList<Integer>.Create;
    ValList.Value.Add(11);
    ValList.Value.Add(33);
    ValList.Value.Add(42);
    ShowMessage(ValList.Value[2].ToString);
  finally
    ValList.Free;
  end;
end;

procedure TMyValue<T>.SetValue(const Value: T);
begin
  FValue := Value;
end;
In echtem Code wird das natürlich deutlich umfangreicher. Aber für den Anfang sollte das reichen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: was ist der Sinn von Templates/Generics ?

  Alt 7. Okt 2024, 20:10
oh Danke.
dachte ich mirs doch: Generics = Vorlagen und Erweiterung von Cast/Pointern, so dass statt einen Pointer, ein konkreter Datentyp bezeichnet/gekennzeichnet wird.

macht Sinn...
anstelle mit Pointern zu jonglieren, ist dann durch Generics gewährleistet, welcher Typ verwendet wird...

ohne das jetzt getestet zu Haben:
- können Generics "vererbt" werden (also die Klassen durch Sub-Classing erweitert werden ?
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#10

AW: was ist der Sinn von Templates/Generics ?

  Alt 7. Okt 2024, 20:12
Hab ich zwar noch nicht gemacht, aber wieso sollte das nicht gehen? Man muss halt darauf achten, dass die Ableitung auch wieder generisch ist.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz