从表示局部变量的字符串中获取值

Las*_*and 9 ruby local-variables

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

variable = 22
"variable".to_variable?
Run Code Online (Sandbox Code Playgroud)

如何22从字符串中获取值?

saw*_*awa 29

binding.local_variable_get("variable")
# => 22
Run Code Online (Sandbox Code Playgroud)


shi*_*vam 5

您可以使用eval.

variable = 22
eval("variable")
# => 22 
Run Code Online (Sandbox Code Playgroud)

但是eval可能很讨厌。如果你不介意声明一个实例变量,你也可以这样做:

@variable = 22
str = "variable"
instance_variable_get("@#{str}")
# => 22
Run Code Online (Sandbox Code Playgroud)

  • 这里不需要`eval`,只需使用[`Binding#local_variable_get`](http://ruby-doc.org/core-2.2.2/Binding.html#method-i-local_variable_get)。 (10认同)