2011-09-23 3 views
0

나는 단지 일부 메타 프로그래밍에 대해 궁금해했다.루비 메타 프로그래밍 : 방법으로 메소드 만들기

실제로 메서드 내에서 메서드를 만들거나 블록에 의해 클래스의 루트에 메서드를 만들어야합니다. 예 :

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

누군가가 이것이 가능한 방법을 알고 있습니까? 그리고 그 방법이하는 것을 어디에 두어야합니까? 내 방법에 대해 하나의 논쟁이 필요합니다.

너,

조안.

답변

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