在Ruby中将数组元素设置为变量

时间:2014-08-11 19:46:35

标签: ruby

假设我有一个包含array = ["one", "two", "three"]等变量的数组。 如何将array[0]指定为变量?我知道这可能是实现这个的错误方法,但我尝试这样的事情:

var = 10   
instance_variable_set("@#{array[0]}", var)

我希望能够致电puts @"#{array[0]}",结果会给我10

编辑:我正在尝试将数组索引(在本例中为#34; one")设置为新变量,以便稍后我可以在其他方法中调用它。这种方式set!适用于稍后在数组不再保持相同值时更改变量。例如,如果将"one"设置为值10的新变量后,如果我得到一个包含["three", "two", "one"]的数组,我希望能够调用puts array[2]并且它给出我10

3 个答案:

答案 0 :(得分:2)

在大多数语言中将其设置为数组:

array[0] = var

答案 1 :(得分:0)

如果要设置实例变量,可以调用@var = array[0]

答案 2 :(得分:0)

eval "@#{array[0]} = var"

p @one
=> 10

eval "p @#{array[0]}"
=> 10

作为推子暗指出,eval具有潜在的危险性,特别是如果值来自用户输入。如果用户输入“rm -rf /`”字符串怎么办?您现在已经清除了根文件夹中的所有内容。