• [^] # Re: troll de noel

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

    > Et pourtant, on peut faire le même effet mais sans se prendre la tête à la définition : MyClass.myFunc.call(x, args)
    Hmmm, marche pas ici:

    class Foo
    def bar(args)
    print args + "\n"
    end
    end

    f = Foo.new()
    Foo.bar.call("hello, world")

    $ ruby test.rb
    test.rb:8: undefined method `bar' for Foo:Class (NoMethodError)

    > et en plus c'est plus explicite que python puisqu'on rajoute call ;-)
    Si tu insistes, tu peu rajouter un __call__ en python... Mais je doute que tu apprécies, vu ta réaction aux __ :)

    > Bon ok dans ruby il y a @, mais en parlant de beauté on est clairement dans le subjectif...
    J'ai vu vraiment très peu de ruby, mais du peu que j'ai vu, je t'accorde le côté plus agréable à l'œil. Mais j'aime beaucoup moins des choses comme la différentiation entre méthode/fonction/attribut. En python, méthode et fonction, c'est la même chose (d'où le self explicite), et mieux, une méthode n'est qu'un attribut comme un autre (getattr et setattr fonctionnent aussi avec les méthodes ! Une méthode n'est qu'un attribut possédant lui même un attribut __call__). Ça a un côté "unification" que je ne retrouve pas en ruby (mais peut être que cela vient du fait que je n'en ai pas fait assez ?)

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