Ruby Metaprogramming:通过方法创建方法

时间:2011-09-23 17:35:14

标签: ruby methods metaprogramming

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

实际上我需要在方法中创建一个方法,或者只是在一个块的根中创建一个方法。例如:

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

有人知道这是怎么回事吗?在哪里放置方法的作用?我的方法需要一个参数。

此致,

Joern。

2 个答案:

答案 0 :(得分:3)

您可以使用define_method:

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

答案 1 :(得分:1)

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

所以我将从书籍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