Il semble considérer que le defer fait office de RAII. Mais c'est oublier que le defer s'exécute quand on quitte la fonction dans laquelle il a été déclaré. Du coup on ne peut pas retourner des objets avec destructeur.
va retourner (vous pouvez aller sur https://zig-play.dev/ pour jouer avec):
taking lock!
Lock!
Unlock!
lock taken [...] !
alors qu'un langage supportant le RAII n'aurait libéré le lock que quand guard n'est effectivement plus référencé, c'est à dire à la fin de la fonction main !
[^] # Re: Mais pourquoi diantre pas de RAII ?
Posté par G.bleu (site web personnel) . En réponse à la dépêche De Zig et des zags. Évalué à 6.
J'en rajoute une couche avec ce post de l'auteur de Zig
Il semble considérer que le defer fait office de RAII. Mais c'est oublier que le defer s'exécute quand on quitte la fonction dans laquelle il a été déclaré. Du coup on ne peut pas retourner des objets avec destructeur.
Par exemple:
va retourner (vous pouvez aller sur https://zig-play.dev/ pour jouer avec):
taking lock!
Lock!
Unlock!
lock taken [...] !
alors qu'un langage supportant le RAII n'aurait libéré le lock que quand
guardn'est effectivement plus référencé, c'est à dire à la fin de la fonctionmain!Et puisque maintenant c'est Vendredi, je vous laisse avec la justification pour fermer l'issue pour faire du vrai RAII en Zig ;-)