AW: Arbeiten mit überladenen Operatoren
Seit ich mich nun etwas eingehender mit überladenen Operatoren auseinander gesetzt habe, denke ich dass Delphi ein kleines Sprachfeature fehlt: Die Möglichkeit, Operatoren in record helpers überladen zu können. Dadurch könnte man auch Standard-Typen innerhalb einer Unit neue Fähigkeiten beibringen. Ein Beispiel:
Delphi-Quellcode:
Aktuell winkt der Compiler bei diesem Code mit einem Fehler ab: "E2123 PROCEDURE, FUNCTION, PROPERTY oder VAR erwartet"
type
TStringHelper = record helper for string public class operator In(A: string; B: TStringDynArray): Boolean; end; implementation class operator TStringHelper.In(A: string; B: TStringDynArray): Boolean; var S: string; begin Result := False; for S in B do begin if SameStr(A, S) then begin Result := True; Break; end; end; end; procedure Beispiel; var LString: string; begin LString := 'Foo'; if LString in ['Foo', 'Bar'] then begin // Machwas end; end; Bisher muss man ja für sowas erst umständlich einen Record-Typen definieren, dem dann per class operator Implicit eine Kompatibilität zu einem String beibringen und dann auch noch prozedurbezogen mit diesem alternativen Stringtyp arbeiten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:45 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