如果我有名为:
的数组test_1
test_2
我有一个可以容纳1
或2
的变量。即。 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
的值答案 0 :(得分: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"
答案 1 :(得分: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'