评估ruby中的变量

时间:2013-02-22 09:37:43

标签: ruby-on-rails ruby

如果我有名为:

的数组
test_1
test_2

我有一个可以容纳12的变量。即。 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

的值

2 个答案:

答案 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'