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