从表示本地变量的字符串中获取值

15

我有一个作为字符串的本地变量名称,需要获取其值。

variable = 22
"variable".to_variable?

我该如何从字符串中获取值22

3个回答

42
binding.local_variable_get("variable")
# => 22

如果没有该名称的变量,有没有一种方法来防止错误? - Chris A

4
你可以使用eval
variable = 22
eval("variable")
# => 22 

然而eval可能有害。如果你不介意声明一个实例变量,你也可以像这样做:

@variable = 22
str = "variable"
instance_variable_get("@#{str}")
# => 22

11
这里不需要使用 eval,只需使用 Binding#local_variable_get - Jörg W Mittag
1
@JörgWMittag 我今天刚通过sawa的回答了解到绑定。我知道eval很糟糕,所以在我的回答中提到了它。但是感谢您指出来.. :) - shivam
eval是潜在的危险操作。 - undefined

0
使用eval()方法:
variable = 22
eval "variable" #"variable".to_variable?
# => 22

5
这里不需要使用 eval,只需使用 Binding#local_variable_get - Jörg W Mittag
eval是潜在的危险操作。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接