1

如果我有名为的数组:

test_1
test_2

我有一个变量可以保存12。IE。id,如果 id 有值1,在这种情况下如何向该数组添加一些东西:

test_#{id} << "value" #-> Where id is 1

它应该像这样执行:

test_1 << "value"

更新 :

test_1 和 test_2 是局部变量。

test_1 = []
test_2 = []

id = 1

这该怎么做 :

test_id 其中 id 是 id 的值

4

2 回答 2

3

使用局部变量,您可以这样做:

test_1 = []
test_2 = []
eval("test_#{id}") << "value"

您可以使用实例变量做得更好:

@test_1 = []
@test_2 = []
instance_variable_get("@test_#{id}") << "value"

但处理这种情况的更好方法是使用以id为键的散列:

test = {1 => [], 2 => []}
test[id] << "value"
于 2013-02-22T09:52:03.397 回答
3

对于这些情况,您应该Hash改用。

results = {}
results['test_1'] = []
results['test_2'] = []

# If we sure that id is in [1,2]. Otherwise we need add check here, or change `results` definition to allow unexisting cases. 
results["test_#{id}"] << 'value'
于 2013-02-22T09:52:36.157 回答