![]() |
Delphi-Version: 10.1 Berlin
Syntax: spitze Klammern - wie nennt man das?
Hallo,
ich beschäftige mich gerade mit JSON. Dabei habe ich in einem Quelltext folgende Syntax entdeckt, die ich in Delphi nie zuvor gesehen habe:
Code:
oder
class(TDictionary<string,TdJSON>)
Code:
Also das mit den spitzen Klammern.
function TdJSON.GetEnumerator: TList<TdJSON>.TEnumerator;
Wie nennt man das (nur dann kann ich mir ergänzende Überlegungen googlen)? Wenn es diese Syntax in Delphi nicht gäbe, wie würde es sonst programmiert aussehen? |
AW: Syntax: spitze Klammern - wie nennt man das?
Das sind Generics (gibt es seit Delphi 2009)
|
AW: Syntax: spitze Klammern - wie nennt man das?
Um die zweite Frage zu beantworten:
class(TDictionary<string,TdJSON>) entspricht TStrings/TStringList, bei der jeder Eintrag ja auch vor Delphi 2009 jeweils ein Objekt enthalten konnte. Unterschied zu Generics: alle Methoden zum Hinzufügen / Lesen der Einträge eines TDictionary sind typsicher. Wollte man das in Delphi ohne Generics nachprogrammieren, würde man eine Klasse TStringListdJSON schreiben mit Methoden, die nur den Typ TdjSON als Objekt erlauben.
Delphi-Quellcode:
type
TStringListdJSON = class(TObject) private FList: TStrings; // enthält eine nur "intern" verwendete TStringList-Instanz ... end; |
AW: Syntax: spitze Klammern - wie nennt man das?
Um genau zu sein wäre das eine TStringList mit jeweils einem Objekt, an das eine Liste von Objekten vom Typ TdJSON gehängt wird. Denn es ist ja eine 1:n Beziehung.
|
AW: Syntax: spitze Klammern - wie nennt man das?
Und um genau zu sein ist
Delphi-Quellcode:
eher ungeeignet, der Autor des Codes hätte besser TObjectDictionary mit doOwnsValues verwenden sollen.
class(TDictionary<string,TdJSON>)
|
AW: Syntax: spitze Klammern - wie nennt man das?
Zitat:
Das mit dem
Delphi-Quellcode:
nimmt man nur dann, wenn man das Lifetime-Management an diese Collection delegieren möchte. Das will man aber nicht in jedem Fall und ob es sich hier um den einen ode anderen Fall handelt kann man gar nicht sehen.
doOwnsValues
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz