如何从“字符串名称”访问实例变量?

时间:2013-01-07 13:53:45

标签: ruby-on-rails-3.2 metaprogramming instance-variables

当我们知道它的字符串名称时,是否有一种方法(元编程?)来读/写一个实例变量?

例如,我在类方法中使用了@my_var实例变量。 在这个过程中,我会想要一个字符串“my_var”来告诉我改变@my_var实例变量。

当然我可以使用“if”语句,但我希望它更具动态性,因为我的方法中可能有许多不同的实例变量。

我正在考虑使用“my_var”.classify 以及其他内容......

有人有线索吗?

感谢您的帮助

1 个答案:

答案 0 :(得分:14)

使用instance_variable_setinstance_variable_get。请记住,字符串需要具有前导@

@foo = "bar"
# => "bar"
instance_variable_get("@foo")
# => "bar"
instance_variable_set("@foo", "baz")
# => "baz"
@foo
# => "baz"