Réalisation du polymorphisme avec envoi dynamique dans Zig
Contrairement à de nombreux langages, Zig n'a pas d'interfaces intégrées. Cependant, cela n'empêche pas le polymorphisme. Cet article détaille une méthode pour réaliser le polymorphisme d'envoi dynamique dans Zig en utilisant des interfaces vtable. Cette approche sépare clairement les interfaces des implémentations, sans nécessiter de modifications des types d'implémentation, tout en permettant l'envoi dynamique. Elle utilise des pointeurs de fonction pour construire une vtable et utilise une fonction `implBy` pour connecter les implémentations à l'interface, imitant efficacement la fonctionnalité des interfaces dans les langages orientés objet. Cela permet de stocker différentes implémentations dans des tableaux ou des maps. Bien qu'il y ait du code boilerplate impliqué, les avantages sont une approche propre, flexible et réutilisable avec un impact minimal sur les types d'implémentation.