【问题标题】:Metaprogramming: How to access parameters of methods inside meta classes元编程:如何访问元类中方法的参数
【发布时间】:2017-09-27 16:45:31
【问题描述】:

我正在学习 ruby​​ 元编程的元类概念。我正在尝试在元类中动态定义方法,但我面临的问题是我无法访问元类中的“名称”。

下面是我的代码。

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

【问题讨论】:

    标签: ruby metaprogramming


    【解决方案1】:

    好的。经过一些在线调试后得到了解决方案。下面是解决办法

    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
    

    【讨论】:

    • 这会为您的类添加一个实例方法。我以为你想为Abc 的单例类添加一个方法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    • 2013-09-08
    • 2019-12-04
    • 2011-04-22
    相关资源
    最近更新 更多