Bud*_*Joe 11 ruby metaprogramming
我如何将:obj转换回def中的一个名为obj的变量?
def foo(bar)
bar.some_method_call
end
foo :obj
Run Code Online (Sandbox Code Playgroud)
更新:最终的代码比这更精细,但......
我喜欢说
foo :obj
Run Code Online (Sandbox Code Playgroud)
代替
foo obj
Run Code Online (Sandbox Code Playgroud)
我正在研究一些类似DSL的语法.而这一改变会让事情看得更清楚一些.
sep*_*p2k 12
obj你的例子中有什么样的变量?如果它是调用foo的作用域的局部变量,则无法从foo内部访问它,除非您将当前绑定作为第二个参数传递.
如果要访问实例变量@obj,则很容易:
def foo(bar)
instance_variable_get("@#{bar}").length
end
@obj = "lala"
foo("obj") #=> 4
Run Code Online (Sandbox Code Playgroud)