Auch nie verstanden habe ich, dass die class operator
jedes mal eine neue Instanz zurückgeben müssen und man nicht wenigstens die Möglichkeit hat den Operator auch mit var
Parameter zu realisieren.
DAS wiederum versteh ich schon. Immerhin heißt es ja class operator und nicht instance operator. Allerdings bin ich da auch schon drüber gestolpert, weil ich den class operator auf einer "Record-Instanz" (wenn man das mal so nennen will) ausgeführt habe und nicht dran dachte dass da eine andere Instanz bei raus kommt.
Auch spannend fände ich jedenfalls die Möglichkeit, wenn sich record helper for TTypIrgendwas mit class operators aufwerten ließen. Intuitiv hatte ich das versucht, ging aber nicht weil in helper records anscheinend gar keine class operators implementiert sind und der Compiler die etwas kryptische Meldung ausgab, dass er ein "var" oder ein "(" erwarten würde. Man stelle sich mal vor:
Delphi-Quellcode:
type
TMyInteger = type of Integer;
TMyIntegerHelper = record helper for TMyInteger
public
class operator Implicit {...} : string;
{...}
class operator Implicit {...} : Integer;
{...}
end;
{...}
procedure Produce;
var
I: TMyInteger;
S: string;
begin
I := 4;
S := I;
WriteLn(S);
WriteLn(I);
end;