guys。我创建了一个类:instance_eval,define_method和method_missing
class A
def initialize &b
instance_eval &b
end
def method_missing method_id, *args
self.define_method(method_id) { puts args.first }
end
end
b = A.new { new_method "oops" }
但就是不起作用
SystemStackError: stack level too deep
为什么?
你可以在method_missing的添加跟踪或断点揣摩自己的问题是什么... – mb14
当添加一些日志语句代码,你会看到define_method没有为实例定义,因此递归。在调用define_method之前为#{method_id}“开始添加'p'Begin method_missing时,您将记录很多行:'Begin method_missing for define_method' – mliebelt
Thanks guys,all works! – avy