【问题标题】:Get value from string representing local variable [duplicate]从表示局部变量的字符串中获取值[重复]
【发布时间】:2015-06-15 08:03:04
【问题描述】:

我有一个局部变量名作为字符串,需要获取它的值。

variable = 22
"variable".to_variable?

如何从字符串中获取值22

【问题讨论】:

    标签: ruby local-variables


    【解决方案1】:
    binding.local_variable_get("variable")
    # => 22
    

    【讨论】:

    • 如果不存在具有该名称的变量,有没有办法防止错误?
    【解决方案2】:

    您可以使用eval

    variable = 22
    eval("variable")
    # => 22 
    

    但是eval can be nasty。如果你不介意声明一个实例变量,你也可以这样做:

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

    【讨论】:

    • 这里不用eval,直接用Binding#local_variable_get即可。
    • @JörgWMittag 我今天通过sawa's answer 了解了绑定。我知道 eval 很糟糕,所以在我的回答中提到了这一点。但是感谢您指出.. :)
    【解决方案3】:

    使用eval()方法:

    variable = 22
    eval "variable" #"variable".to_variable?
    # => 22
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 2018-02-04
    • 2014-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多