Ruby Metaprogramming: создание метода методом - PullRequest
0 голосов
/ 23 сентября 2011

Я просто удивился метапрограммированию.

На самом деле мне нужно создать метод внутри метода или просто создать метод в корне класса с помощью блока. Пример:

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

Кто-нибудь знает, как это возможно? А где разместить то, что делает метод? Мне нужен один аргумент для моего метода.

Ваш

Йорн.

Ответы [ 2 ]

3 голосов
/ 23 сентября 2011

Вы можете использовать define_method:

[:method_a, :method_b].each do |m|
  define_method(m) do
    # your method stuff
  end
end
1 голос
/ 23 сентября 2011

Я не понимаю ваш пример. Вы также генерируете источник для метода?

Итак, я начну с примера из книги Perrotta: Метапрограммирование Ruby

class MyClass
  define_method :my_method do |my_arg|
    my_arg * 3
  end
end

obj = MyClass.new
obj.my_method(2) # => 6
...