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