• [^] # Re: troll de noel

    Posté par (site web personnel) . En réponse à la dépêche Ruby 1.9.0 est sorti pour Noël. Évalué à 2.

    oups, désolé le "MyClass.myFunc.call" était pas du ruby du tout ;-) (du javascript en fait) Désolé pour la confusion.

    vi, rajouter un __call__ ... c'est moyen je trouve. Ou plutôt ça doit rester du code "interne"

    Concernant les méthodes, attributs, ... Une méthode et un attribut c'est normale que ce ne soit pas pareil
    Mais en fait ça dépend comment on fait ;-)
    Un attribut est par défaut uniquement privé (et ça c'est le bien)
    Mais on peut évidemment le rendre public.
    Et on peut également définir les méthodes d'accès aux attributs, mais ces méthodes on l'énorme avantage (selon moi) de se comporter de l'extérieur comme si on accédait directement à l'attribut (pas de get...() set...(value) tout pas beau et lourd)
    ex :

    $ cat test.rb
    class MyClass
    attr_accessor :myAttr
    def myAttr=(value)
    @myAttr = "myAttr is set to #{value}"
    end
    def myAttr
    print @myAttr + "\n"
    end
    end

    obj = MyClass.new
    obj.myAttr = 2
    obj.myAttr

    $ ruby test.rb
    myAttr is set to 2

    Sinon, par simple curiosité, comment fait ruby pour un nombre variable d'arguments ? (le *args de python)

    def myFunc(*args)
    print args.join(", ")
    end

    myFunc(1, 2, 3, 4)
    1, 2, 3, 4