dav*_*k01 5 ruby lambda metaprogramming
假设我在最顶层有以下ruby定义
callable = lambda {"#{hi}"}
Run Code Online (Sandbox Code Playgroud)
并且假设稍后我创建了一个名为的对象temp,它有一个名为的方法hi.现在我想做的是callable在上下文中调用temp.我试过了
temp.instance_eval do callable.call end
Run Code Online (Sandbox Code Playgroud)
但这给了我错误" NameError: undefined local variable or method 'hi' for main:Object".我想知道是否有任何方式重新绑定的情况下callable,以temp使我没有得到一个错误信息?我知道我可以method_missing在main上定义:对象并重新路由所有方法调用,temp但这看起来像是一个太大的黑客来完成我想要的东西.