Le destructeur est une méthode qui est appelée lors de la désallocation de l'objet, ça n'implique pas qu'on ait à la provoquer soi-même.
Je sais bien, mais en pratique faire des dtors qui ne sont pas appelés de manière deterministe n'est pas toujours simple.
et le destructeur se charge de l'enregistrer quand on a fini. [...]
Ruby permet aussi ce genre d'idiomes à la C++, par exemple :
File.open("foobar.txt") { |filehandle|
...
}
à la fin du bloc, le fichier est fermé. Et ce genre d'idiome (RAII - Ressource Allocation Is Initialisation) ne peut vraiment fonctionner que si tu as un appel deterministe de ton dtor.
En plus Cédric Foll nous dit qu'il y a bien des finalizers en Ruby, j'aurais du mieux regarder mon pickaxe avant de te répondre :-).
[^] # Re: Oui, mais...
Posté par Guillaume Laurent . En réponse à la dépêche Interview de Matz le créateur de Ruby. Évalué à 3.
Je sais bien, mais en pratique faire des dtors qui ne sont pas appelés de manière deterministe n'est pas toujours simple.
et le destructeur se charge de l'enregistrer quand on a fini. [...]
Ruby permet aussi ce genre d'idiomes à la C++, par exemple :
File.open("foobar.txt") { |filehandle|
...
}
à la fin du bloc, le fichier est fermé. Et ce genre d'idiome (RAII - Ressource Allocation Is Initialisation) ne peut vraiment fonctionner que si tu as un appel deterministe de ton dtor.
En plus Cédric Foll nous dit qu'il y a bien des finalizers en Ruby, j'aurais du mieux regarder mon pickaxe avant de te répondre :-).