Genau genommen sind Records auch Klassen.
In Delphi ist es andersrum.
Klassen sind intern ein Record mit einem Pointer davor. (und der Pointer zeigt in die Mitte des Records, statt auf dessen Anfang)
Um mal meinen Vater zu zitieren:
"Alles ein Gemehr"
Was mich an der Sache hier viel mehr interessiert hat waren überladene Operatoren in Record Helpers. Das wäre wirklich eine nützliche Sache. Denn damit könnte man das Standardverhalten für einfache Typen lokal übersteuern. Beispiel:
Delphi-Quellcode:
var
S: string;
begin
S := 'foo';
if S in ['foo', 'bar'] then begin
{...}
end;
end;
das wäre doch viel übersichtlicher als komplexe if-or-or-or-then-Konstrukte. Noch besser wäre natürlich, wenn case auch mit Strings umgehen könnte:
Delphi-Quellcode:
var
S: string;
begin
S := 'foo';
case S of
'foo': {...}
'bar': {...}
end;
end;
Für case-Anweisungen fehlt irgendwie ein überladbarer Operator. Equality spielt da zwar mit rein, aber case an sich ist nicht flexibel genug. Da ist switch-case in anderen Sprachen (z.B. Javascript, PHP) deutlich komfortabler.