【发布时间】:2010-06-28 15:57:59
【问题描述】:
假设我在最顶层有以下 ruby 定义
callable = lambda {"#{hi}"}
并假设稍后我创建了一个名为temp 的对象,该对象有一个名为hi 的方法。现在我想做的是在temp 的上下文中调用callable。我试过做
temp.instance_eval do callable.call end
但这给了我错误“NameError: undefined local variable or method 'hi' for main:Object”。我想知道是否有任何方法可以将callable 的上下文重新绑定到temp,这样我就不会收到错误消息?我知道我可以在 main:Object 上定义 method_missing 并将所有方法调用重新路由到 temp 但这似乎太大了,无法完成我想要的。
【问题讨论】:
标签: ruby lambda metaprogramming