Polymorphismus mit dynamischer Dispatch in Zig erreichen
Im Gegensatz zu vielen anderen Sprachen hat Zig keine eingebauten Interfaces. Dies schließt Polymorphismus jedoch nicht aus. Dieser Artikel beschreibt eine Methode, um dynamische Dispatch-Polymorphie in Zig mithilfe von VTable-Interfaces zu erreichen. Dieser Ansatz trennt Interfaces und Implementierungen sauber voneinander, erfordert keine Änderungen an den Implementierungstypen und ermöglicht gleichzeitig dynamisches Dispatch. Er nutzt Funktionszeiger, um eine VTable zu erstellen, und verwendet eine `implBy`-Funktion, um Implementierungen mit dem Interface zu verbinden. Dies imitiert effektiv die Funktionalität von Interfaces in objektorientierten Sprachen und ermöglicht das Speichern verschiedener Implementierungen in Arrays oder Maps. Obwohl etwas Boilerplate-Code erforderlich ist, bietet dieser Ansatz eine saubere, flexible und wiederverwendbare Lösung mit minimalem Einfluss auf die Implementierungstypen.