我可以通过其他方式实现这种动态性,但它让我很好奇。在Ruby中是否有类似的机制?
$varname = "hello";
$$varname = "world";
echo $hello; //Output: world
答案 0 :(得分:7)
您可以使用eval
x = "myvar"
myvar = "hi"
eval(x) -> "hi"
答案 1 :(得分: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
。