jeudi 15 mai 2008

Ruby : Création dynamique de méthodes

Ola Bini vient de publier un article très bien fait sur les différentes façons disponibles en Ruby pour la création dynamique de méthodes.


Pour cela, il envisage trois voies : le def classique, la méthode define_method ou l'une de ces deux dans un eval. Plusieurs paramètres importants dans le choix de la méthode utilisée :

De façon assez amusante, il recommande pour des questions de vitesse, surtout, d'utiliser en priorité le def classique. Juste pour l'exemple, voici le code d'une définition par def, dans un eval :

class Foo
end

bar = Foo.new
method_name = :something

eval "def bar.#{method_name}; puts 'Hi !'; end"

bar.method(method_name).call
#=> Hi !



1 commentaires:

Lefty a dit…

Le Retour du Jedaye...