1) Il n'y pas de destructeurs
Ce n'est pas entierment vrai.
# Création
a = Object.new
# destruction
a = nil
Lorsque qu'un objet est libéré grace qu GC, une méthode peut être appelé (pour fermer des sockets, des fichiers, ce genre de trucs) ceci grace à define_finalizer().
exemple:
include ObjectSpace
a = "A"
b = "B"
c = "C"
define_finalizer(a, proc {|id| puts "Finalizer one on #{id}" })
define_finalizer(a, proc {|id| puts "Finalizer two on #{id}" })
define_finalizer(b, proc {|id| puts "Finalizer three on #{id}" })
renvoie:
0x4018d4f0
n finals=>1
Finalizer three on 537684600
0x4018d504
n finals=>0
Finalizer one on 537684610
n finals=>0
Finalizer two on 537684610
La forme des structures de contrôle de type while... end ...
Tout d'abord la plupart des éditeurs reconnaissent Ruby (vim, emacs, scite, ...).
Mais l'arguement est recevable.
[^] # Re: Oui, mais...
Posté par Cédric Foll . En réponse à la dépêche Interview de Matz le créateur de Ruby. Évalué à 4.
Ce n'est pas entierment vrai.
# Création
a = Object.new
# destruction
a = nil
Lorsque qu'un objet est libéré grace qu GC, une méthode peut être appelé (pour fermer des sockets, des fichiers, ce genre de trucs) ceci grace à define_finalizer().
exemple:
include ObjectSpace
a = "A"
b = "B"
c = "C"
define_finalizer(a, proc {|id| puts "Finalizer one on #{id}" })
define_finalizer(a, proc {|id| puts "Finalizer two on #{id}" })
define_finalizer(b, proc {|id| puts "Finalizer three on #{id}" })
renvoie:
0x4018d4f0
n finals=>1
Finalizer three on 537684600
0x4018d504
n finals=>0
Finalizer one on 537684610
n finals=>0
Finalizer two on 537684610
La forme des structures de contrôle de type while... end ...
Tout d'abord la plupart des éditeurs reconnaissent Ruby (vim, emacs, scite, ...).
Mais l'arguement est recevable.