【发布时间】:2011-06-25 05:19:26
【问题描述】:
我对在 Ruby 中动态设置局部变量很感兴趣。不创建方法、常量或实例变量。
比如:
args[:a] = 1
args.each_pair do |k,v|
Object.make_instance_var k,v
end
puts a
> 1
我特别想要局部变量,因为有问题的方法存在于模型中,我不想污染全局或对象空间。
【问题讨论】:
-
是否有任何特殊原因需要局部变量而不是简单地访问
args中的对? -
你的意思是在方法 X 中有一堆变量名和值,然后在方法 Y 中用作方法 Y 的局部变量?另外,这里有一个来自 matz 的有用评论:ruby-forum.com/topic/155673#685906
-
基本上我有一组参数模糊不清的函数,传入会清晰很多:present_value(:n=>6,:m=>4..etc),然后在函数中自动将它们用作局部变量,而不是通过重新定义它们或以散列形式使用它们来重复自己。根据您的评论 Zabba 我查看了:github.com/maca/arguments ...但由于它显然不再处于积极开发状态,因此无法使其在 1.9.2 中可靠地工作。
-
呵呵,1.9.2 不行了,我们失去了从活体中提取树的功能。你可以用它做一些疯狂的事情。我是作者
-
Ruby 2.2.2 可能会添加通过 binding.local_variables 添加的功能
标签: ruby metaprogramming local-variables