2
我可以用其他方式完成这个动态性质,但它让我很好奇。在Ruby中是否有类似的机制?有没有可能在Ruby中做动态变量?
$varname = "hello";
$$varname = "world";
echo $hello; //Output: world
我可以用其他方式完成这个动态性质,但它让我很好奇。在Ruby中是否有类似的机制?有没有可能在Ruby中做动态变量?
$varname = "hello";
$$varname = "world";
echo $hello; //Output: world
可以使用eval
x = "myvar"
myvar = "hi"
eval(x) -> "hi"
这可能仅适用于实例变量(和类变量)实现类似的东西:
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
局部变量。
第3行有没有额外的冒号? – btelles 2010-01-30 17:30:02
是的,冒号等同于在字符串文字上调用to_sym:将其转换为符号。 – molf 2010-01-30 17:36:12
IOW':“abcdef”==“abcdef”.to_sym ==:abcdef',您也可以使用插值法:“#{klazz} _#{id}”==“#{klazz} _#{id }”。to_sym'。 – yfeldblum 2010-01-30 17:56:00