Ajoutez dynamiquement des méthodes de classe ruby ou des méthodes d'instance
Je suis tout à fait nouveau pour Ruby, encore en apprentissage. Je faisais des recherches un peu sur la façon d'ajouter des méthodes de manière dynamique, et j'ai réussi à créer des méthodes d'instance, mais pas avec succès lors de la création de méthodes de la classe.
C'est comment j'ai généré les méthodes d'instance:
class B
def before_method
puts "before method"
end
def self.run(method)
send :define_method, method do
before_method
puts "method #{method}"
end
end
end
class A < B
run :m
run :n
end
Une idée sur les meilleurs moyens de créer des méthodes statiques?
Ma tâche finale consiste à rechercher le meilleur moyen de créer un "avant" et "après" des tâches pour les méthodes de la classe.
source d'informationauteur purbon | 2011-09-12
Vous devez vous connecter pour publier un commentaire.
Voici quelque chose de re-travaillé à utiliser les méthodes de la classe:
Mise à jour: à l'Aide de
define_singleton_method
de Ruby 1.9 qui attribue à la eigenclass.Créer des méthodes d'instance de manière dynamique, essayez
Maintenant, toute instance de Foo aurait la méthode "a", "b", "c". Essayez
De définir les méthodes de la classe dynamiquement, essayez
Puis essayez
Méthodes d'Instance d'un objet singleton classe singleton méthodes de l'objet lui-même. Donc, si vous ne
vous pouvez maintenant appeler
(Edit: ajouté B. exécuter :foo que par Lars Haugseth commentaire)