2017-09-27 6 views
-1

J'apprends le concept de méta-classes de ruby ​​meta-programming. J'essaie de définir la méthode dynamiquement à l'intérieur de la méta-classe mais le problème auquel je suis confronté est que je ne suis pas capable d'accéder à "nom" à l'intérieur de la méta-classe.Métaprogrammation: Comment accéder aux paramètres des méthodes à l'intérieur des méta-classes

Voici mon code.

class Abc 

    def add_method(name) 

     class << self 

     define_method "#{name}" do 

     end 

     end 
    end 
end 

a = Module.const_get("Abc").new 
a.add_method("my_method") 
a.my_method 

Répondre

0

Ok. obtenu une solution après un débogage en ligne. Ci-dessous la solution

class Abc  
    def add_method(name)  
     meta_class = class << self  
     self 
     end 
     meta_class.class_eval do 
     define_method "#{name}" do 

     end  
    end 
    end 
end 

a = Module.const_get("Abc").new 
a.add_method("my_method") 
a.my_method 
+0

Ceci ajoute une méthode d'instance à votre classe. Je pensais que tu voulais ajouter une méthode à la classe singleton de 'Abc'? –