【问题标题】:Ruby Metaprogramming: creating a method by a methodRuby 元编程:通过方法创建方法
【发布时间】:2011-09-23 17:35:13
【问题描述】:

我只是想知道一些元编程。

其实我需要在一个方法中创建一个方法,或者只是在一个类的根目录中通过一个块创建一个方法。示例:

["method_a", "method_b"].each do |m|
  Marshal.generate_a_method_called(m)
end

有人知道这怎么可能吗?该方法的作用在哪里?我的方法需要一个参数。

你的,

乔恩。

【问题讨论】:

    标签: ruby methods metaprogramming


    【解决方案1】:

    你可以使用define_method:

    [:method_a, :method_b].each do |m|
      define_method(m) do
        # your method stuff
      end
    end
    

    【讨论】:

      【解决方案2】:

      我不明白你的例子。您是否也在为该方法生成源代码?

      所以我将从Perrotta: Metaprogramming Ruby一书中的一个例子开始

      class MyClass
        define_method :my_method do |my_arg|
          my_arg * 3
        end
      end
      
      obj = MyClass.new
      obj.my_method(2) # => 6
      

      【讨论】:

        猜你喜欢
        • 2012-03-18
        • 2015-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-01
        • 1970-01-01
        • 2011-10-08
        • 1970-01-01
        相关资源
        最近更新 更多