2
我试图实现一个类,允许其子类保存方法块以便稍后执行它们。它的工作,但似乎我采取了错误的方式。看看这个:从块内调用实例方法
class SuperKlass
def self.exec_later(&block)
@@block_for_later = block
end
def exec_now
return unless @@block_for_later
@@block_for_later.call
end
end
class ChildKlass < SuperKlass
exec_later do
child_method
end
def child_method
puts "Child method called"
end
end
test_klass = ChildKlass.new
test_klass.exec_now
如果我试图执行这段代码,在一个方法缺失错误块结果调用child_method
。有人知道我做错了什么,以及添加这种功能的正确方法是什么?
大,这个工程。虽然我知道instance_eval,但我不知道它可以用来用&符执行一个块。非常感谢您的回答! – dhoelzgen 2011-05-01 14:29:17
我很高兴能够帮助你,因为我现在正在学习元编程,并且我可以使用一些成功的新知识。 :)关于使用&符号,我学到了很多方法/ proc调用细节[here](http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Method_Calls#The_ampersand_.28.26.29)。我希望它对你也有用。 – 2011-05-01 14:51:47
这个链接真的对我很有帮助,再次感谢:)我发现另一个链接[这里](http://www.ruby-forum.com/topic/54096#32642)这可能可能有帮助,关于传递参数,如果一个块这样调用。 – dhoelzgen 2011-05-01 17:58:51