Logrando Polimorfismo con Despacho Dinámico en Zig
A diferencia de muchos lenguajes, Zig carece de interfaces integradas. Sin embargo, esto no impide el polimorfismo. Este artículo detalla un método para lograr el polimorfismo de despacho dinámico en Zig usando interfaces vtable. Este enfoque separa limpiamente las interfaces de las implementaciones, sin requerir cambios en los tipos de implementación, mientras permite el despacho dinámico. Utiliza punteros de función para construir una vtable y usa una función `implBy` para conectar las implementaciones a la interfaz, imitando eficazmente la funcionalidad de las interfaces en lenguajes orientados a objetos. Esto permite almacenar diferentes implementaciones en matrices o mapas. Si bien hay algo de código repetitivo involucrado, las ventajas son un enfoque limpio, flexible y reutilizable con un impacto mínimo en los tipos de implementación.