Человек, я сегодня очищаю слои от лука, в любом случае вот код
class MyClass
def initialize(dynamic_methods)
@arr = Array.new(dynamic_methods)
@arr.each { |m|
self.class.class_eval do
define_method(m) do
"<#{yield self if block_given?}>"
end
end
}
end
end
tmp = MyClass.new ['method1', 'method2', 'method3']
tmp.method1 do |t|
"here"
end
Моя проблема в том, что я пытаюсь получить доступ "здесь" в define_method (m), когда методвыполняется, а не когда создается.Текущий оператор "<# {yield self if block_given?}>" Не дает мне этого.И если вам интересно, я должен сохранить эту часть кода как есть, но я могу внести все изменения, которые я хочу, в MyClass.
tmp = MyClass.new ['method1', 'method2', 'method3']
tmp.method1 do |t|
"here"
end
Может кто-нибудь помочь с синтаксисом?Заранее спасибо за помощь.
ОБНОВЛЕНИЕ: см. Мой ответ ниже.