【发布时间】:2014-04-26 17:32:28
【问题描述】:
我有一个函数,它定义并返回一个新类,并带有一些预构建的方法。例如:
def define_class(name, options={}, &block)
klass = Class.new(Class) do
def say_hello
puts "Hello!"
end
def say_goodbye
puts "Adios!"
end
end
parent_class.const_set(form_class, klass)
klass
end
因此,例如,这是可行的:
define_class("testing").new.say_hello #=> "Hello!"
但我希望能够通过一个块传递自定义方法,然后将其添加到我的类中,如下所示:
define_class "testing" do
# ... custom methods
end
这样就可以了:
klass = define_class "testing" do
def interject
puts "Excuse me?"
end
end
klass.new.interject #=> "Excuse me?"
但我不知道如何使它起作用;我尝试了 instance_eval、class_eval 和 yield,但都没有产生预期的结果。
【问题讨论】:
标签: ruby metaprogramming