AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Vorteile von Records gegenüber Objekten

Offene Frage von "JamesTKirk"
Ein Thema von Luckie · begonnen am 6. Mai 2011 · letzter Beitrag vom 12. Mai 2011
 
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#20

AW: Vorteile von Records gegenüber Objekten

  Alt 8. Mai 2011, 18:30
Zitat:
Und was hat die Verwendung von Operatoren mit Garbage-Collection zu tun?
Garnichts ... jedenfalls nicht direkt.

Aber für Operatoren wird eine automatische Speicherverwaltung benötigt und diese ist bei Objekten nicht vorhanden.
Wer sagt das dies notwendig ist? Ich kann in FPC zum Beispiel bereits mit globalen Operatoren mein Beispiel von oben umsetzen. Das liest sich dann so:

Delphi-Quellcode:
type
  TIntClass = class
    Value: Integer;
    constructor Create(aValue: Integer);
  end;

operator + (aLeft, aRight: TIntClass): TIntClass;
begin
  Result := TIntClass.Create(aLeft.Value + aRight.Value);
end;
Wieso kann man eigentlich nicht primitive Typen um Methoden erweitern? So könnte man z.B. Integer.ToString schreiben wie man das aus anderen objektorientierten Sprachen kennt. (Früher fand ich das ja hässlich, weil es quasi voraussetzt, dass alle Typen sich gegenseitig kennen, aber andererseits ist es doch irgendwie ganz praktisch...)

Oder geht sowas inzwischen?
Mir kam beim implementieren von class und record helpern durchaus der Gedanke, dass man sowas auch machen könnte (konsequenterweise dann natürlich auch "interface helper" und "object helper").

Beispiel:
Delphi-Quellcode:
TIntegerHelper = type helper for Integer
  (...)
end;
Wobei natürlich dann die Frage aufkommt, ob ein "type helper" für Integer dann auch für LongWord oder Byte funktioniert, oder ein Helper für Ansistring auch für WideString . Dieses Problem besteht bei Records weniger, da diese nicht einfach durch Zuweisungen ohne Casts "ineinander umgewandelt" werden können.

Aber "Record Helper" für normale Typen wäre schon was schönes

Einen Record, darin einen Integer, noch die ganzen Operatoren und vorallen die implizizen und expliziten Typumwandlungen und schon hast du einen erweiterten Integer.
Konnte Delphi .NET das nicht schon von Haus aus? - Ich hab gerade das komische Gefühl im Bauch, dass da zwischendurch ein Rückschritt passiert ist. Oder Emba hat nicht die .NET-Zusatzfeatures in die Win32-Version übernommen
Ich behaupte mal letzeres. Generics haben ja auch ne Weile gebraucht, bis sie implementiert waren.

Gruß,
Sven
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
 


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 04:31 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-2025 by Thomas Breitkreuz