我想以编程方式将新变量插入本地 Ruby 命名空间。例如,我希望能够写
label = 'some_name'
# some code equivalent to
# some_name = 3
# but using only 'label' to get the name.
puts some_name # returns 3
我要在中间放些什么来完成这项工作?
最佳答案
我已经回答了另一个 SO question similar to this .简短的回答是这样的,如果你特别想根据另一个变量的值创建一个名称为它的局部变量,那么就没有办法做到这一点。你只是想让看起来好像你已经创建了一个本地但它真的是 ruby 魔法,那么@mikong 的回答是一种方法。
请注意,如果您放宽约束并乐于创建一个实例变量,那么您可以这样做。
label = 'some_name'
self.instance_variable_set("#{label}", 3)
puts @some_name
您甚至可以动态定义一个访问器,然后您可以摆脱难看的@,但您将再次拥有一个伪装成局部变量而不是真正的局部变量的方法。
关于Ruby:将变量导出到本地命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7020233/