【发布时间】:2011-01-11 05:43:24
【问题描述】:
我可以通过其他方式实现这种动态特性,但这让我产生了好奇。 Ruby中是否有类似的机制?
$varname = "hello";
$$varname = "world";
echo $hello; //Output: world
【问题讨论】:
我可以通过其他方式实现这种动态特性,但这让我产生了好奇。 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。
【讨论】:
:"abcdef" == "abcdef".to_sym == :abcdef,你也可以使用插值:"#{klazz}_#{id}" == "#{klazz}_#{id}".to_sym。