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.
Das geht wie gesagt nur bei Typen, denen man sowieso Operatoren verpassen kann, wie Records oder Klassen (bei Klassen mit der schon besprochenen Einschränkung). Nicht aber bei string, Integer und Co. Ich hab z.B. weitere Operatoren für System.Rtti.TValue geschrieben, die Anwendung finden, wenn ich die entsprechende
Unit einbinde.
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.
Die unterstützung von nicht ordinalen Typen in einem switch/case hat aber in den mir bekannten Sprachen nichts mit Operatoren auf den unterstützten Typen zu tun sondern sind in der Sprachsyntax bzw dem Compiler verankert, der dann weiß, wie er damit umzugehen hat. Bei Ordinaltypen kann eine Jumptable auf den passenden Wert gebaut werden, so macht Delphi das, aber bei anderen Typen müssen andere Strategien her, die in aller Regel der Compiler entscheidet (
wie z.B. in C# bei string). Kommen dann noch so interessante Dinge wie
Pattern matching hinzu, wirds komplexer.
Bzgl Verbesserung des case of Statements: einfach mal nen Vote für
RSP-16478 abgeben und die Daumen drücken.