Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Arbeiten mit überladenen Operatoren (https://www.delphipraxis.net/202469-arbeiten-mit-ueberladenen-operatoren.html)

Codehunter 18. Dez 2019 07:24

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:
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;
Aktuell winkt der Compiler bei diesem Code mit einem Fehler ab: "E2123 PROCEDURE, FUNCTION, PROPERTY oder VAR erwartet"

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.
Seite 2 von 2     12   

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