2010-01-30 56 views

回答

7

可以使用eval

x = "myvar" 
myvar = "hi" 
eval(x) -> "hi" 
5

这可能仅适用于实例变量(和类变量)实现类似的东西:

class MyClass 
    def initialize 
    @varname = :"@hello" 
    instance_variable_set @varname, "world" 
    end 

    def greet 
    puts instance_variable_get(@varname) 
    end 
end 

MyClass.new.greet 
#=> "world" 

对于必须使用eval局部变量。

+0

第3行有没有额外的冒号? – btelles 2010-01-30 17:30:02

+0

是的,冒号等同于在字符串文字上调用to_sym:将其转换为符号。 – molf 2010-01-30 17:36:12

+0

IOW':“abcdef”==“abcdef”.to_sym ==:abcdef',您也可以使用插值法:“#{klazz} _#{id}”==“#{klazz} _#{id }”。to_sym'。 – yfeldblum 2010-01-30 17:56:00

相关问题