2011-09-23 58 views
0

我只是想知道一些元編程。紅寶石元編程:通過方法創建方法

其實我需要在一個方法內創建一個方法,或者只是在一個塊的根類中創建一個方法。例如:

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

有人知道這有可能嗎?哪裏可以放置什麼方法?我的方法需要一個參數。

你的,

Joern。

回答

3

你可以使用define_method:

[:method_a, :method_b].each do |m| 
    define_method(m) do 
    # your method stuff 
    end 
end 
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