• [^] # Re: Oui, mais...

    Posté par . En réponse à la dépêche Interview de Matz le créateur de Ruby. Évalué à 4.

    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.